一段时间以来,我一直在使用rsync来复制文件。我的理解是,当要传输的某些文件已经在目标目录中时,rsync比cp快,仅传输增量差异(即“增量”)。
如果这是正确的,使用rsync移动文件夹A的内容是否有任何优势,比如文件夹B,而B为空?
文件夹A有接近 1TB 的数据(其中有数百万个文件)。传输将通过本地网络完成(A和B位于不同的文件系统上,都安装在超级计算机上,例如A是NFS和B是光泽)。
除此之外,我应该使用哪些标志来要求rsync将文件从A移动(而不是复制)到B(即在传输成功完成后删除A)?
Gil*_*il' 88
您可以传递--remove-source-files给 rsync 来移动文件而不是复制它们。
但是在您的情况下,使用 rsync 毫无意义,因为目标是空的。平原mv将尽快完成这项工作。
在您的情况下,可能对性能产生影响的是网络协议的选择,如果您可以选择 NFS、Samba、sshfs、sftp、rsync over ssh、tar 管道传输到 ssh 等。这些方法的相对速度取决于关于文件大小、网络和磁盘带宽以及其他因素,因此无法提供一般建议,您需要运行自己的基准测试。
Kri*_*ian 38
由于--remove-source-files不删除目录,我发出以下命令通过 ssh移动文件:
rsync -avzh --remove-source-files --progress /source/ user@server:/target \
&& find /source -type d -empty -delete
Run Code Online (Sandbox Code Playgroud)
我个人喜欢这个--progress功能,因为我是手动传输的。如果您使用脚本,请将其删除。我预计它会略微减慢传输速度。该find命令的删除选项仅删除空目录 - 不要使用rm -rf,因为它可能会删除非空目录,以防文件未传输。该-delete选项打开该-depth选项,以便从“底部”向上删除空目录树。
Cal*_*leb 21
总的来说,正如Gilles 所说,rsync当mv可以更轻松地完成相同的工作并且普通文件系统之间没有潜在的速度增益时,使用移动文件没有任何优势。
然而,有时会有优势。特别是,如果您对源、目的地或执行工作的机器的稳定性有任何疑问,使用可以rsync为您提供恢复能力。如果您的传输量非常大,例如您的电网不可靠,这可能是一个显着的优势。使用 rsync 将是一种更稳定的方法,可以在发生故障时避免数据损坏并从中断的地方继续。
小智 18
使用 rsync 移动文件夹 A 的内容(例如文件夹 B,其中 B 为空)是否有任何优势?
我发现自己处于 rsync 比 mv 快的情况,这仅仅是因为 mv 无法处理目录中的文件数量。我有来自安全摄像头的 180 万张照片,该摄像头运行了 20 天,并且 mv 命令因无法分配资源而失败退出。
然而,rsync 似乎可以毫无问题地处理所有文件。