首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用rsync进行远程增量备份?

用rsync进行远程增量备份?
EN

Server Fault用户
提问于 2018-11-20 01:30:12
回答 1查看 1.9K关注 0票数 0

我正在尝试设置rsync以将增量备份发送到远程服务器。第一个备份将转到“备份”文件夹,然后下一个备份将只发送对"backup.1“文件夹的更改,依此类推。

我通过以下命令在本地成功地做到了这一点,该命令似乎正如前所述,在第二次同步中创建了一个backup.1文件夹:

代码语言:javascript
运行
复制
rsync -zaP folder_to_backup /backup  

然后,我设置了一个ssh密钥对,并设法使rsync远程工作,因此我现在使用:

代码语言:javascript
运行
复制
rsync -zaP folder_to_backup myuser@myserver:/home/myuser/backup

同步工作,文件出现在删除服务器上。但是,一旦我第二次运行它,新的文件只需添加到现有的“备份”文件夹,而不是创建一个备份1文件夹。我还使用-b参数尝试了其他命令,例如:

代码语言:javascript
运行
复制
rsync -zaPb folder_to_backup myuser@myserver:/home/myuser/backup
rsync -aPb --backup-dir=`date +%s` folder_to_backup myuser@myserver:/home/myuser/backup

但在任何情况下都是一样的。在最后一种情况下,同步仍然转到“备份”文件夹,备份-dir参数似乎完全被忽略。

我做错了什么?

编辑:阅读评论,当我说“它似乎像描述的那样工作,在第二次同步上创建一个backup.1文件夹”时,我可能会有些困惑。我就是这么记得的,但很明显这不是rsync的特性?相反,我现在安装了r快照,这对于增量备份非常有用。

EN

回答 1

Server Fault用户

发布于 2021-12-24 09:37:48

我编写了这个剧本,它使用--link-dest只传输新文件,同时硬链接所有未修改的文件。这样,只有传输是增量的,而每个备份本身每次都是一个完整的备份。示例:

代码语言:javascript
运行
复制
src_path="/home/user“
dst_path="user@server:/home/Backups"
rsync_options=(
  --archive # same as --recursive --links --perms --times --group --owner --devices --specials
  --human-readable # output numbers in a human-readable format
  --itemize-changes # output a change-summary for all updates
  --exclude="[Tt][Ee][Mm][Pp]/" # exclude dirs with the name "temp" or "Temp" or "TEMP"
  --exclude="[Tt][Mm][Pp]/" # exclude dirs with the name "tmp" or "Tmp" or "TMP"
  --exclude="Cache/" # exclude dirs with the name "Cache"
)
empty_dir="/tmp/empty_dir"
new_backup="$(date +%Y%m%d_%H%M%S)"
last_backup=$(rsync --dry-run --recursive --itemize-changes --exclude="*/*/" --include="[0-9]*/" --exclude="*" "$dst_path/" "$empty_dir" | grep -oP "[0-9_/]*" | sort -r | head -n1)
last_backup="${last_backup/$(echo "$dst_path" | grep -oP "^.*:")/}" # remove ssh login
rsync "${rsync_options[@]}" --stats --delete --link-dest="$last_backup" "$src_path/" "$dst_path/$new_backup"

当然,这只在目标文件系统支持硬链接的情况下才能工作,但大多数文件系统都支持硬链接。

我希望rsync将来将支持--reflink,以减少大型文件中的小改动的存储使用量。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/940799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档