我正在尝试检查 FreeBSD 中的只读分区是否保持不变。我使用 dump 执行此操作:
dump -R -h 0 -0Laf /dumps/boot.dump /dev/ufs/boot
然后我计算它的 SHA256。我曾经-R
确信它是 rsync 友好的。然而,即使是两个连续的转储也不同。
我用了二进制差异检查差异,发现有 8 个字节,在两个转储中重复多次,每个文件中都相同,但它们对于每个文件都是唯一的。例如,在一个文件中它们是,30 11 68 C6 76 78 13 6A
而在另一个文件中它们是12 EA CE AD BC E5 D5 19
。
这是时间戳吗?我认为-R
应该删除它们,而且它们与接近的时间戳有很大不同。
我也对有-D
和-T
,有 和无-R
,以及这些 的不同排列进行了检查……结果仍然不一样。
我怎样才能使这些文件独一无二?
答案1
你可以使用mtree(8)
为了这。
以下命令给出给定路径下所有文件的 SHA1 校验和、大小和修改时间/usr/local/lib/nss/
。
mtree -c -k sha1,size,time -p /usr/local/lib/nss/
输出结果如下:
# user: foo
# machine: yourbox.some.domain
# tree: /usr/local/lib/nss
# date: Sun Nov 20 13:41:00 2016
# .
/set type=file
. type=dir time=1476030547.604196000
libcrmf.a size=112138 time=1476030546.964514000 \
sha1digest=adf6740ed7a26bf2a47a0a16feb3a4c03c71fdb7
libfreebl3.so \
size=7832 time=1476030546.897479000 \
sha1digest=182acf347c5aedb2a170dbb2b2db2e3315deffea
libfreeblpriv3.so \
size=607504 time=1476030546.905097000 \
sha1digest=e78da683f4eeebd095cf68e7cb94e312d97f0d76
libnss3.so size=1190864 time=1476030546.925650000 \
sha1digest=ef71d6e7381f7912f53ceefb8f5bc573d498b708
libnssckbi.so \
size=624552 time=1476030546.938686000 \
sha1digest=b9136f4ac19fad6609beff75fe49951edb220675
libnssdbm3.so \
size=144224 time=1476030546.943065000 \
sha1digest=61228d4e50516e287b210424cf4aa6c343ebab0d
libnssutil3.so \
size=182976 time=1476030546.946941000 \
sha1digest=9537a0c9e7123e88dd3fe7d0fe84e05cd6a41920
libsmime3.so \
size=172336 time=1476030546.950852000 \
sha1digest=44fc183e1aac7e09b4dc900432b8467457eeef64
libsoftokn3.so \
size=275152 time=1476030546.955057000 \
sha1digest=0bea8dc0448ddf4a5c3ea972b7f6834815cf944e
libssl3.so size=354328 time=1476030546.962381000 \
sha1digest=8e92be9aad3e444da0e72cfa20521a2f9676fc79
填充文件系统后,mtree
第一次运行并将输出保存在安全位置。下次运行时mtree
,使用该-f
选项提供要比较的规范。