md5sum 检查(无文件)

md5sum 检查(无文件)

所以我尝试使用 shell 脚本检查数十个文件。文件检查发生在不同的时间。

有没有办法做到这一点?

md5sum -c 24f4ce42e0bc39ddf7b7e879a File.name

甚至更好的 sha512sum

sha512sum -c 24f4ce42e0bc39ddf7b7e879a File.name

现在我必须这样做:

md5sum -c file.md5sums File.name

或者更好的是我可以将所有 md5sum 放在一个文件中并像这样检查它们:

md5sum -c `sed 1p file.md5sums` File.name
md5sum -c `sed 2p file.md5sums` File.name
md5sum -c `sed 3p file.md5sums` File.name
md5sum -c `sed 4p file.md5sums` File.name

拥有数十个只有单个条目的文件似乎很愚蠢。

答案1

我能够对多个文件执行 sha256sum,将输出写入文本文件并运行 a sha256sum -c sumfile,它似乎对我有用。

$ sha256sum $(find /etc/ -maxdepth 1 -type f) > test.txt
$ sha256sum -c test.txt
...
/etc/statetab: OK
/etc/sysctl.conf: OK
/etc/system-release: OK
/etc/system-release-cpe: OK
/etc/termcap: OK
/etc/updatedb.conf: OK
/etc/vconsole.conf: OK
/etc/vimrc: OK
/etc/virc: OK
/etc/yum.conf: OK
...
$ sha256sum --version
sha256sum (GNU coreutils) 8.22

答案2

md5sum实用程序与 GNU coreutils 集合中的所有其他类似实用程序一样,能够获取校验和文件并根据文件系统中的相应文件验证这些文件。

假设我已经生成了如下所示的校验和文件:

$ md5sum /etc/* >sums
$ cat sums
e55afe6e88abb09f0bee39549f1dfbbd  /etc/afpovertcp.cfg
279f7ab7d2609163e5034738b169238b  /etc/aliases
5c1ba75b6d9d8cf921ec83e2a54c9bb5  /etc/asl.conf
[...]
d41d8cd98f00b204e9800998ecf8427e  /etc/xtab
32d37eb59a7c3735635db329adad86d7  /etc/zprofile
4efb8dbeb8f46ca3879666b313a2607f  /etc/zshrc

然后我可以一次性验证所有这些校验和,如下所示:

$ md5sum -c sums
/etc/afpovertcp.cfg: OK
/etc/aliases: OK
/etc/asl.conf: OK
[...]
/etc/xtab: OK
/etc/zprofile: OK
/etc/zshrc: OK

如果我误解了你而你只是想检查一下一个特定的文件中的几个文件sums,然后我会这样做:

$ fgrep "/etc/xtab" sums | md5sum -c -

答案3

如果您在脚本中执行此操作,那么您只需进行简单的比较检查即可,例如

if [ "$(md5sum < File.name)" = "24f4ce42e0bc39ddf7b7e879a  -" ]
then
  echo Pass
else
  echo Fail
fi

请注意额外的空格 和-需要匹配 md5sum 的输出。

如果它看起来更干净,你可以把它做成单行

[[ "$(md5sum < File.name)" = "24f4ce42e0bc39ddf7b7e879a  -" ]] && echo Pass || echo Fail

答案4

对于单个文件,您可以执行此操作(在 bash 中)将字符串作为文件传递

md5sum -c <(echo "24f4ce42e0bc39ddf7b7e879a File.name") File.name

相关内容