rsync --remove-source-files是一一删除还是在rsync完成后删除源文件?


23

我在将文件夹内容复制到另一台计算机的应用程序中有一个rsync命令。我可以选择,--remove-source-files因为我只对在rsync完成后将文件放在目标计算机上感兴趣。

但是,我想知道rsync在传输文件时崩溃还是被中断时的行为如何?

考虑我有两个要同步的文件,ab。是rsync copy a,然后从源中删除它,然后开始复制b,还是先等待两者ab然后再将它们复制到目标计算机,然后再删除它们?我已经看到您可以在删除带有某些标志的无关文件时配置此行为,但是没有发现与删除源文件有关的行为。


类似于stackoverflow.com/questions/7380234/…尽管我认为Kyle可能是对的-有时rsync似乎等待所有文件完成,但有时它确实在完成之前删除了文件。不过还是有些困惑。
Chris2048

Answers:


16

检查rsync代码会发现源文件在发送时已被删除,尽管可能不会立即发生。rsync多路复用其操作,因此可以将成功接收文件(因此可以将其删除)的消息缓冲在其他数据后面。


2
根据下面的回答,我尝试了几个文件,只有成功完成操作后,文件才会被删除。这使我认为,您发现的“传输正常”信号仅在成功完成操作后才会渗透。
丹尼尔·安德森

5
如果您尝试使用多个文件,则会在整个传输完成之前看到源文件消失。
凯尔·琼斯

看起来当指定目录和递归选项时,不会立即删除中的文件
Andre Holzner 2014年

4

我尝试过(当然,您也可以轻松地做到这一点)。成功传输所有文件后,将它们删除。如果传输中断或发生其他错误,即使其中一些传输正常,也不会删除源文件。

编辑:根据凯尔·琼斯的回答,当涉及许多文件时,情况可能会有所不同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.