小编Gab*_*esy的帖子

分块大型 rsync 传输?

我们使用 rsync 将主文件服务器的镜像更新为异地并置备份服务器。我们目前遇到的问题之一是我们的文件服务器有 > 1TB 的大多数较小的文件(在 10-100kb 范围内),当我们传输这么多数据时,我们经常会在几个小时内连接中断转移。Rsync 没有恢复/重试功能,可以简单地重新连接到服务器以从停止的地方开始——您需要通过文件比较过程,这最终会随着我们拥有的文件数量而变得非常长。

建议绕过的解决方案是将大型 rsync 传输拆分为一系列较小的传输。我认为最好的方法是通过顶级目录名称的第一个字母,这并没有给我们一个完美均匀的分布,但已经足够了。

我想确认我这样做的方法是否合理,或者是否有更简单的方法来实现目标。

为此,我遍历 AZ, az, 0-9 以选择一个字符$prefix。一开始我只是想跑步

rsync -av --delete --delete-excluded --exclude "*.mp3" "src/$prefix*" dest/
Run Code Online (Sandbox Code Playgroud)

(--exclude "*.mp3" 只是一个例子,因为我们有一个更长的排除列表来删除临时文件之类的东西)

这样做的问题是 dest/ 中不再存在于 src 上的任何顶级目录都不会被 --delete 选取。为了解决这个问题,我改为尝试以下方法:

rsync \
--filter 'S /$prefix*' \
--filter 'R /$prefix*' \
--filter 'H /*' \
--filter 'P /*' \
-av --delete --delete-excluded --exclude "*.mp3" src/ dest/
Run Code Online (Sandbox Code Playgroud)

我正在使用showand hideover includeand exclude,因为否则 --delete-excluded 将删除任何与 $prefix 不匹配的内容。

这是将 rsync 拆分为较小块的最有效方法吗?有没有更有效的工具,或者我错过的标志,可以让这更简单?

backup rsync file-transfer

7
推荐指数
1
解决办法
5635
查看次数

标签 统计

backup ×1

file-transfer ×1

rsync ×1