我在应用程序中有一个 rsync 命令,用于将文件夹的内容复制到另一台计算机。我之所以有这个选项,--remove-source-files
是因为我只想在 rsync 完成后将文件保留在目标计算机上。
但是,我想知道如果 rsync 在传输文件时崩溃或中断,它会如何表现?
假设我有两个文件需要同步,a
和b
。rsync 会先复制a
,然后从源中删除,再开始复制b
,还是会等待a
和b
都复制到目标计算机后再删除它们?我发现你可以在使用某些标志删除无关文件时配置此行为,但没有找到有关删除源文件的方法。
答案1
检查 rsync 代码发现,源文件在发送时就被删除,尽管这可能不会立即发生。rsync 对其操作进行多路复用,因此文件已成功接收(因此可以删除)的消息可能会排在其他数据后面。
答案2
我试过了(当然你也可以很容易地做到)。它们在之后被移除全部文件传输成功。如果传输中断或出现其他错误,则不会删除源文件,即使其中一些文件传输成功。
编辑:根据 Kyle Jones 的回答,当涉及许多文件时,情况可能会有所不同。
答案3
我刚刚尝试过,似乎单元在传输时会被删除,rsync <src_a> <src_b> .... <dst>
但目录中的文件不会作为参数