我经常使用 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
简历文件夹之外。因此,我留下了部分传输(将在下一次暂停或传输完成时被替换或删除)以及正在进行的传输。
这很不方便,因为:
- 我的目的地没有太多可用空间;
- 文件相当大;
- 如果部分传输“足够远”,我可能无法恢复它,因为 rsync 将尝试首先复制它,并会抱怨没有足够的空间可用于恢复;
- 我没有理由想到保留部分文件的副本来恢复传输:应该使用部分文件本身。
有没有办法避免这种行为或者这是设计使然?如果是这样,为什么我们希望它以这种方式工作?
答案1
--inplace
尽管有一个可用的补丁允许结合使用该选项--partial-dir
来避免此复制,但看起来这还不可能。
参考错误 13071欲了解更多详细信息,请参阅描述:
如果 --inplace 与 --partial-dir 或任何暗示它的选项 (--delay-update) 一起使用,则就地行为将在部分目录中发生,每个文件一旦完成就会被移动到其最终目的地。
不幸的是,到目前为止这个补丁还没有被应用。