如果一个进程被杀死,rsync是否可以部分复制一个文件?

我对rsync假设是,它以一种“同步”的方式传输文件,这意味着它是全有或全无。 这是正确的,还是有可能的rsync可能会返回一个非0,仍然坚持在预期的名称下的远程磁盘上的东西? 换句话说,我从服务器A到服务器B的rsync myfile.txt作为/myfile.txt 。 由于某种原因传输失败(一个服务器崩溃或进程在恰当的时间被终止)。 现在,是否可以在服务器B上创build/myfile.txt文件,或者rsync是否使用临时文件(或其他文件)来确保文件已经完全传输,然后重命名它?

请注意,我正在使用Ubuntu 12.04.2,以防万一,而且我的磁盘上没有caching的回写废话,因为性能或任何事情(如果磁盘说已完成,写入完成)。

如果您查看rsync的手册页,您会看到它有一个--delay-updates选项,这听起来与您的需求相关。

该选项将每个更新文件的临时文件放入保存目录中,直到传输结束,此时所有文件都被快速连续地重新命名。 这试图使文件的更新更加primefaces化。 默认情况下,文件放在每个文件的目标目录中名为lq。〜tmp〜rq的目录下,但是如果你已经指定了–partial-dir选项,那么将会使用该目录。 请参阅–partial-dir部分中的注释,以讨论如何将此lq。〜tmp〜rq dir从传输中排除,以及如果您想要rsync清除旧的lq。〜tmp〜rq dirs那可能是躺在周围。 与–inplace–append冲突。

更新:成功时只返回0,根据手册页错误值不为 0。