我的假设rsync
是它以“同步”的方式传输文件,这意味着它是全有或全无。这是正确的,还是有rsync
可能返回一个非 0 并且仍然以预期的名称在远程磁盘上保留了一些东西?换句话说,我rsync
myfile.txt
从服务器 A 到服务器 B 作为/myfile.txt
. 由于某种原因传输失败(一台服务器崩溃或进程在正确的时间被终止)。现在,是否有可能/myfile.txt
在服务器 B 上创建,或者对rsync
临时文件(或其他文件)做一些事情以确保文件已完全传输然后重命名?
请注意,我使用的是 Ubuntu 12.04.2,以防万一,而且我的磁盘上没有缓存回写废话以提高性能或其他任何内容(如果磁盘说它已完成,则写入已完成)。
如果您查看 rsync 的手册页,您会发现它有一个
--delay-updates
听起来与您的需求相关的选项。更新:根据手册页,它将在成功时仅返回 0,在错误时返回值NOT 0。