![使用 rsync 确保两个目录具有完全相同的文件](https://linux22.com/image/1063790/%E4%BD%BF%E7%94%A8%20rsync%20%E7%A1%AE%E4%BF%9D%E4%B8%A4%E4%B8%AA%E7%9B%AE%E5%BD%95%E5%85%B7%E6%9C%89%E5%AE%8C%E5%85%A8%E7%9B%B8%E5%90%8C%E7%9A%84%E6%96%87%E4%BB%B6.png)
我想将一个非常大的目录(数 TB 的数 GB 文件)克隆到另一个驱动器上的另一个目录。我一直在使用这个命令:
ionice -c 3 rsync -avz /path/to/sourcedir/ /path/to/destdir/
这个过程需要一天多的时间,而且经常会中断,因此使用rsync
可以恢复,而无需从零开始。理论上,上述命令是幂等的,所以当任何命令失败时,我应该能够重新发出相同的命令,让它找出中断的位置并从那里继续。
现在,因为操作的目的是退出并回收源驱动器,所以在执行此操作之前,我希望非常确定所有文件都已正确复制。所以我使用了这个问题逐字节比较每个文件。果然,有许多文件的哈希值不同。
因此理论问题是:rsync
与我认为我理解的不同,是否仅仅对文件名起作用,而不是内容,或者至少是长度?
还有(更重要的)实践问题:我可以使用其他选项来强制rsync
生成源目录的精确克隆吗?特别是,在rsync
启动时,当目标目录中已经有一个与源目录中的文件同名但内容不同的文件时,我希望命令确保它被替换(或“完成”)为源目录中的实际原始文件。
答案1
是的,你可以让它rsync
看起来进入检查文件是否全部匹配。从man rsync
-c, --checksum skip based on checksum, not mod-time & size
当然会很慢,但rsync
应该可以发现正常检查无法发现的差异。
但 rsyncing 不是克隆。如果你想要克隆副本,请使用克隆兹拉。