很长一段时间以来,我一直在两个外置硬盘上进行备份。这些驱动器让我发疯。
虽然存储在2个驱动器上的常规信息是相同的,但由于隐藏文件(如.DS_Store),它们的文件大小不同。到目前为止,我一直在使用根目录大小来确保这两个备份是相同的。如果两个根以字节为单位表示相同的大小,我可以肯定它们是相同的。但隐藏的文件确实是一个痛苦的问题。
我尝试使用diff,这样:
diff -rq -x '.*' dir1 dir2
但这非常慢。我求求你们,帮助我找一种方法来检查两个巨大的目录是否包含相同的数据。
我的想法是制作一些递归命令,只比较文件名+文件大小。这应该比diff快得多,实际上是比较每个文件。
PS:备份超过700 GB。
答案 0 :(得分:1)
您可以使用rsync
向您展示与这些内容不同的内容:
rsync -aHv --delete --dry-run dir1/ dir2/
如果你想用其他实用工具处理它,它不一定是最有用的输出格式,但是对于人工审查,它没关系......
答案 1 :(得分:0)
您可能需要考虑计算两个驱动器上的校验和并比较输出。 这应该比diff快得多,尽管运行需要一些时间。
尝试:
$ find -s somedir -not -path '*/\.*' -type f -exec md5sum {} \; | md5sum
您可以在find命令中看到隐藏文件被忽略。
您可能还想到了一种在没有隐藏文件的情况下计算目录大小的方法。