我想从以下位置移动文件服务器1到服务器2。
一位制作人于服务器1将继续生成文件,并且消费者服务器2将继续处理它们。
我可以使用以下 shell 脚本复制文件:
rsync path/*.txt server2:/path
目标上文件的扩展名 (服务器2)一旦处理完毕,将从 .txt 更改为 .done,因此,如果我再次运行该命令,文件将再次复制(并处理)到目的地。
因此,我想删除(或重命名或移动)原始文件,以便它们不会再次传输。
我使用的是rsync
2.6.3 版本,它没有 --remove-source-files 选项。
我是 shell 脚本新手,所以请举个例子。
答案1
使用rsync
--remove-source-files
选项
从man rsync
--remove-source-files
This tells rsync to remove from the sending side the files
(meaning non-directories) that are a part of the transfer and
have been successfully duplicated on the receiving side.
您始终可以使用选项执行试运行而不进行任何更改,如果您喜欢输出,则运行不带选项的--dry-run
最终命令--dry-run
例如:rsync --remove-source-files -options /path/to/src/ computerB:/path/to/dest
并且还看看这在继续之前提出问题。
答案2
根据man
-page,您应该能够--remove-source-files
使用rsync
--删除源文件
这告诉 rsync 从发送端删除属于传输一部分且已在接收端成功复制的文件(即非目录)。