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

bra*_*les 26 rsync file-transfer

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

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

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

Kyl*_*nes 17

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

  • 如果您尝试使用多个文件,您会看到源文件在整个传输完成之前消失了。 (5认同)
  • 根据我下面的回答,我尝试了几个文件,只有在完整操作成功后才会删除文件。这让我觉得你发现的“传输OK”信号只有在完成操作成功时才​​会渗透。 (2认同)

Dan*_*son 7

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

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