使用 rsync 在目录之间移动(而不是复制)文件?

使用 rsync 在目录之间移动(而不是复制)文件?

我一直在使用同步复制文件一段时间。我的理解是同步CP当某些要传输的文件已位于目标目录中时,仅传输增量差异(即“增量”)。

如果这是正确的,那么使用会有什么优势吗?同步移动文件夹的内容A,也就是说,一个文件夹, 和是空的吗?

文件夹A拥有接近 1TB 的数据(其中有数百万个文件)。转移将通过本地完成网络A正在不同的文件系统,两者已安装在超级计算机上,例如A网络文件系统光泽)。

除此之外,我应该使用什么标志来询问同步从中移动(而不是复制)文件A(即删除A传输何时成功完成)?

答案1

您可以传递--remove-source-files给 rsync 来移动文件而不是复制它们。

但就您而言,使用 rsync 是没有意义的,因为目的地是空的。平原mv将尽快完成这项工作。

在您的情况下,如果您可以在 NFS、Samba、sshfs、sftp、rsync over ssh、tar 管道传输到 ssh 等之间进行选择,那么网络协议的选择可能会对性能产生影响。这些方法的相对速度取决于取决于文件大小、网络和磁盘带宽以及其他因素,因此无法提供一般建议,您需要运行自己的基准测试。

答案2

由于--remove-source-files不会删除目录,因此我发出以下命令移动通过 ssh 的文件:

rsync -avzh --remove-source-files --progress /source/ user@server:/target \
&&  find /source -type d -empty -delete

我个人喜欢这个--progress功能,因为我手动进行此传输。如果您使用脚本,请将其删除。我预计它会稍微减慢传输速度。该find命令的删除选项仅删除空目录 - 不要使用rm -rf,因为如果文件未传输,它可能会删除非空目录。该-delete选项打开该-depth选项,以便从“底部”向上删除空目录树。

答案3

一般来说如吉尔斯说当可以更简单地完成相同的工作并且普通文件系统之间没有潜在的速度增益时,使用rsync移动文件没有任何优势。mv

但有时还是有优势的。特别是,如果您对源、目标或执行工作的机器的稳定性有任何疑问,则使用rsync可以让您恢复能力。如果您的传输规模非常大,并且您的电网不可靠,这可能是一个显着的优势。使用 rsync 将是一种更稳定的方法,可以在发生故障时避免数据损坏并从中断处继续。

答案4

如果你想递归合并目录...将一个目录移动到另一个目录中,可能会复制目录名称,然后请看我的回答这里在 serverfault.com 上。mv当目录存在同名时,效果很差,并且rsync复制(读取+写入完整数据)每个文件而不是仅仅移动它们(仅读取和写入元数据)。

相关内容