如何将文件从一台服务器移动(而不是复制)到另一台服务器?

如何将文件从一台服务器移动(而不是复制)到另一台服务器?

我想从以下位置移动文件服务器1服务器2

一位制作人于服务器1将继续生成文件,并且消费者服务器2将继续处理它们。

我可以使用以下 shell 脚本复制文件:

rsync path/*.txt server2:/path

目标上文件的扩展名 (服务器2)一旦处理完毕,将从 .txt 更改为 .done,因此,如果我再次运行该命令,文件将再次复制(并处理)到目的地。

因此,我想删除(或重命名或移动)原始文件,以便它们不会再次传输。

我使用的是rsync2.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 从发送端删除属于传输一部分且已在接收端成功复制的文件(即非目录)。

相关内容