美文网首页Linux 学习Python生信
Linux常用命令详解 | md5sum 文件一致性校验

Linux常用命令详解 | md5sum 文件一致性校验

作者: 生信师姐 | 来源:发表于2020-10-30 11:31 被阅读0次

一、简介

md5sum计算检验MD5效验码。MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性非常小。

一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。其他两个工具sha256sumsha512sum的工作方式与md5sum相同。

二、基本命令

$ md5sum --help
Usage: md5sum [OPTION]... [FILE]...
Print or check MD5 (128-bit) checksums.
With no FILE, or when FILE is -, read standard input.

  -t, --text           read in text mode (default)
  -b, --binary         read in binary mode
  -c, --check          read MD5 sums from the FILEs and check them
      --tag            create a BSD-style checksum
  Note: There is no difference between binary and text mode option on GNU system.


The following four options are useful only when verifying checksums:
      --quiet          don't print OK for each successfully verified file
      --status         don't output anything, status code shows success
      --strict         exit non-zero for improperly formatted checksum lines
  -w, --warn           warn about improperly formatted checksum lines

      --help     display this help and exit
      --version  output version information and exit

The sums are computed as described in RFC 1321.  When checking, the input
should be a former output of this program.  The default mode is to print
a line with checksum, a character indicating input mode ('*' for binary,
space for text), and name for each FILE.
md5sum filename > filename.md5

也可以把多个文件的报文摘要输出到一个md5文件中,这要使用通配符 *,比如某目录下有几个iso文件,要把这几个iso文件的摘要输出到iso.md5文件中,命令如下:

md5sum *.iso > iso.md5

特殊说明:
1)md5sum 是校验文件内容,与文件名是否相同无关

2)md5sum值逐位校验,所以文件越大,校验时间越长。

三、常见功能

1. 验证文件是否被篡改

把下载的文件file和该文件的file.md5报文摘要文件放在同一个目录下,然后用如下命令进行验证:

md5sum -c file.md5

然后如果验证成功,则会输出:OK

2. 验证多个文件

md5sum命令可以一次验证多个文件。如果将散列写入文件,则可以使用该文件检查是否有任何文件已更改。 在这里,我们先将文件的散列写入文件散列,然后使用它来验证没有任何文件已经改变。

$ md5sum file1.txt file2.txt file3.txt > hashes
$ md5sum --check hashes
file1.txt: OK
file2.txt: OK
file3.txt: OK

现在我们将更改file3.txt,在文件末尾添加一个感叹号,然后重新运行该命令。

echo "!" >> file3.txt
$ md5sum --check hashes
file1.txt: OK
file2.txt: OK
file3.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

可以看到file3.txt已经改变了。

3. 只显示修改过的文件

如果有许多文件需要检查,可能只想显示已更改的文件。 使用--quiet选项,md5sum将只列出已经改变的文件。

$ md5sum --quiet --check hashes
file3.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

4. 递归生成各文件的的MD5值

find ./test_rc1 -type f -print0| xargs -0 md5sum >> rc1_md5.txt
find ./test_rc2 -type f -print0| xargs -0 md5sum >> rc2_md5.txt

5. 比较两文件的MD5值

diff -c rc1_md5.txt  rc2_md5.txt

Ref:

相关文章

网友评论

    本文标题:Linux常用命令详解 | md5sum 文件一致性校验

    本文链接:https://www.haomeiwen.com/subject/gidxmktx.html