rsync传输后在发送端删除文件

72
我希望从远程机器下载大量数据,并且希望在每次文件下载完成后都能够在远程机器上将其删除。 如何实现这一功能?rsync有相应的标志吗?
1个回答

102

你需要在rsync命令中添加--remove-source-files选项。这会告诉rsync从发送端删除已成功复制到接收端的文件(即非目录)。不要将--delete选项传递给rsync命令,因为它会删除目标目录中的额外文件。

使用rsync在传输成功后删除源文件。

语法如下:

rsync --remove-source-files -options /path/to/src/ /path/to/dest
rsync --remove-source-files -options /path/to/src/ computerB:/path/to/dest
rsync --remove-source-files -av /path/to/src/*.avi computerB:/path/to/dest

参考资料: http://www.cyberciti.biz/faq/linux-unix-bsd-appleosx-rsync-delete-file-after-transfer/


9
有没有办法在源端也删除目录? - Johann Bzh
6
这也很有帮助:https://explainshell.com/explain?cmd=rsync+--dry-run+--remove-source-files+-avzPh(注:这是一个关于使用rsync命令的网站,提供了该命令的详细解释和示例用法) - Tung
2
explainshell.com是一个做得非常好的工具,感谢您的提示。 - whiskeychief
3
关于删除目录,Unix StackExchange 上也有一篇非常有帮助的帖子,您可以参考一下:https://unix.stackexchange.com/questions/371144/usage-of-remove-source-files-option-of-rsync - GDP2
有没有一种方法可以始终删除源文件,即使它们传输到目标位置失败? - Petr Vepřek
rsync 用于与复制/镜像操作相关的成功。如果您想在 rsync 作业完成后清除任何剩余的内容,那么这就是基本 rm 的工作。 - Eric Marceau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接