概括
我已将rsync --archive
一个文件夹从文件系统复制 ()ext4
到zfs
具有compression on
.现在,我尝试验证两个文件夹是否相同,以便我可以安全地删除源文件夹。
重新运行时rsync
,不会传输任何额外字节。因此,rsync 确信这两个文件夹是相同的。
但是,使用du
、du -b
、 或md5sum
会对这两个文件夹产生不同的结果。
在删除源文件夹之前,如何说服自己这两个文件夹是相同的?
例子
我上传了一个测试文件夹883
包含四个文件。
fiedl@ext4 ▶ du 883
20 883
fiedl@zfs ▶ du 883
57 883
fiedl@ext4 ▶ du -s 883
20 883
fiedl@zfs ▶ du -s 883
57 883
fiedl@ext4 ▶ du -sb 883
4660 883
fiedl@zfs ▶ du -sb 883
570 883
fiedl@ext4 ▶ du 883/*
4 883/big_image001.gif
4 883/image001.gif
4 883/medium_image001.gif
4 883/thumb.png
fiedl@zfs ▶ du 883/*
10 883/big_image001.gif
10 883/image001.gif
10 883/medium_image001.gif
10 883/thumb.png
fiedl@ext4 ▶ tar -cf - 883 | md5sum
7c8a4ff31fdf594b04173789b23c7bb8 -
fiedl@zfs ▶ tar -cf - 883 | md5sum
f207dbadd75126665af300705774c97f -
答案1
md5sum
和diff
假设观察到的差异是不同元数据和 zfs 压缩的结果,md5sum
各个文件各自的差异应该还是一样的。
cd /path/to/ext4 && find . | xargs md5sum | sort > ~/md5sum-index-ext4
cd /path/to/zfs && find . | xargs md5sum | sort > ~/md5sum-index-zfs
diff ~/md5sum-index-ext4 ~/md5sum-index-zfs
此解决方法使用递归列出目录中的所有文件find
,并md5sum
为每个文件添加sort
结果,因为find
可能会以不同的顺序返回内容。然后可以比较两个文件夹的结果。如果它们相同,则为diff
空。否则,具有不同二进制内容的文件将显示在diff
.
diff -r
我可以直接使用比较较小的文件夹diff -r
。然而,这对于大文件夹来说已经崩溃了,可能是由于内存不足。
diff -r /path/to/ext4 /path/to/zfs
如果两个文件夹相同,则为diff
空。