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

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

我在应用程序中有一个 rsync 命令,用于将文件夹的内容复制到另一台计算机。我之所以有这个选项,--remove-source-files是因为我只想在 rsync 完成后将文件保留在目标计算机上。

但是,我想知道如果 rsync 在传输文件时崩溃或中断,它会如何表现?

假设我有两个文件需要同步,ab。rsync 会先复制a,然后从源中删除,再开始复制b,还是会等待ab都复制到目标计算机后再删除它们?我发现你可以在使用某些标志删除无关文件时配置此行为,但没有找到有关删除源文件的方法。

答案1

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

答案2

我试过了(当然你也可以很容易地做到)。它们在之后被移除全部文件传输成功。如果传输中断或出现其他错误,则不会删除源文件,即使其中一些文件传输成功。

编辑:根据 Kyle Jones 的回答,当涉及许多文件时,情况可能会有所不同。

答案3

我刚刚尝试过,似乎单元在传输时会被删除,rsync <src_a> <src_b> .... <dst>但目录中的文件不会作为参数

相关内容