rsync 恢复时保留先前的部分文件

rsync 恢复时保留先前的部分文件

我经常使用 rsync 和以下命令从远程服务器传输大文件:

rsync -rvhm \
    --progress \
    --size-only \
    --stats \
    --partial-dir=.rsync-partial \
    "user@server::module/some_path" "some_path"

some_path这样,即使传输失败,我也可以稍后恢复,并且我知道目的地上只会有完整的文件,因为所有部分传输都将保留在some_path/.rsync-partial.

当传输恢复时,rsync 首先检查部分传输以确定要恢复的确切位置(我猜),我对此很满意。问题是,当完成此检查后,部分文件会变得复制的.partial-rsync简历文件夹之外。因此,我留下了部分传输(将在下一次暂停或传输完成时被替换或删除)以及正在进行的传输。

这很不方便,因为:

  1. 我的目的地没有太多可用空间;
  2. 文件相当大;
  3. 如果部分传输“足够远”,我可能无法恢复它,因为 rsync 将尝试首先复制它,并会抱怨没有足够的空间可用于恢复;
  4. 我没有理由想到保留部分文件的副本来恢复传输:应该使用部分文件本身。

有没有办法避免这种行为或者这是设计使然?如果是这样,为什么我们希望它以这种方式工作?

答案1

--inplace尽管有一个可用的补丁允许结合使用该选项--partial-dir来避免此复制,但看起来这还不可能。

参考错误 13071欲了解更多详细信息,请参阅描述:

如果 --inplace 与 --partial-dir 或任何暗示它的选项 (--delay-update) 一起使用,则就地行为将在部分目录中发生,每个文件一旦完成就会被移动到其最终目的地。

不幸的是,到目前为止这个补丁还没有被应用。

相关内容