如果进程被终止,rsync 是否可以部分复制文件?

如果进程被终止,rsync 是否可以部分复制文件?

我的假设rsync是它以“同步”方式传输文件,这意味着它是全有或全无。这是正确的吗?或者是否有可能rsync返回非 0 并且仍然在远程磁盘上以预期名称保留某些内容?换句话说,我rsync myfile.txt以 的身份从服务器 A 传输到服务器 B。/myfile.txt传输因某种原因失败(一台服务器崩溃或进程在恰当的时间被终止)。现在,是否有可能/myfile.txt在服务器 B 上创建 ,或者rsync对临时文件(或其他)执行某些操作以确保文件已完全传输然后重命名?

请注意,我正在使用 Ubuntu 12.04.2,以防万一,并且我的磁盘上没有缓存写回废话,以提高性能或任何其他(如果磁盘显示它已完成,则写入已完成)。

答案1

如果您查看 rsync 的手册页,您会发现它有一个--delay-updates与您的需求相关的选项。

此选项将每个更新文件的临时文件放入一个保存目录中,直到传输结束,此时所有文件将快速连续地重命名到位。这试图使文件的更新更加原子化。默认情况下,文件被放置在每个文件的目标目录中名为 lq.~tmp~rq 的目录中,但如果您指定了--部分目录选项,则将使用该目录。请参阅--部分目录部分讨论了如何将此 lq.~tmp~rq 目录排除在传输之外,以及如果您希望 rsync 清理可能存在的旧 lq.~tmp~rq 目录,您可以做什么。与- 到位- 附加

更新:成功时将仅返回 0,并且值不是根据手册页,错误信息为 0。

相关内容