从联机帮助页 rsync
--remove-source-files
这告诉 rsync 从发送方删除作为传输一部分并已在接收方成功复制的文件(即非目录)。
这是否意味着发送方的文件是传输的一部分或在接收方复制?
我也可以删除发送方的目录吗?
请注意,您应该只对静止的源文件使用此选项。
如果您使用它来将出现在特定目录中的文件移动到另一台主机,请确保将完成的文件重命名到源目录中,而不是直接写入其中,以便 rsync 无法传输文件还没有完全写完。
如果您不能先将文件写入不同的目录,则应使用命名习惯用法,让 rsync 避免传输尚未完成的文件(例如,在写入文件时将文件命名为“foo.new”,将其重命名为“ foo" 完成后,然后使用选项 --exclude='*.new' 进行 rsync 传输)。
从 3.1.0 开始,如果文件的大小或修改时间没有保持不变,rsync 将跳过发送方删除(并输出错误)。
谢谢。
问:这是否意味着发送方的文件是传输的一部分或在接收方复制?
问:我也可以删除发送端的目录吗?
--remove-source-files
然后发出命令find <source_directory> -type d -empty -delete
OR find <source_directory> -type l -type d -empty -delete
(在删除中包含符号链接)(曾是: )--remove-source-files
然后发出命令 rm -rf <source_directory>
正如 OrangeDog 的评论中所述,该rm -rf
建议是不安全的。具体而言,任何因任何原因未传输的文件(文件在构建传输列表和开始实际传输该文件之间发生更改、接收方磁盘空间不足、网络连接断开等)将在源目录中保持不变通过 rsync - 但是在您rm -rf
调用之后它们就消失了。如果所有源文件都已成功传输和删除,find
上面的命令将递归删除空的源树,但不会留下任何剩余的文件(当然还有它们的包含目录)。
问:“静止的源文件”是什么意思?
问:如果您使用它来将显示在特定目录中的文件移动到另一台主机,请确保将完成的文件重命名到源目录中,而不是直接写入其中,以便 rsync 无法传输尚未完全写入的文件。这是什么意思?
问:如果你不能先将文件写入不同的目录,你应该使用一个命名习惯,让 rsync 避免传输尚未完成的文件(例如,在写入文件时将文件命名为“foo.new”,重命名它完成后改为“foo”,然后使用选项 --exclude='*.new' 进行 rsync 传输)。这是什么意思?
问:从 3.1.0 开始,如果文件的大小或修改时间没有保持不变,rsync 将跳过发送方删除(并输出错误)。这是什么意思?