shell命令--md5sum

shell命令--md5sum

0、md5sum命令的专属图床

点此快速打开文章图床_shell命令md5sum

1、md5sum命令的功能说明

​ 在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现。那么校验文件的完整性,也是势在必行的。md5sum 命令用于生成和校验文件的 md5 值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其 md5 值相同。md5 值是一个 128 位的二进制数据,转换成16 进制则是 32(128/4)位的进制值。md5 校验,有很小的概率不同的文件生成的 md5 可能相同。比 md5 更安全的校验算法还有 SHA*系列的。在网络传输时,我们校验源文件获得其 md5sum,传输完毕后,校验其目标文件,并对比如果源文件和目标文件 md5 一致的话,则表示文件传输无异常。否则说明文件在传输过程中未正确传输。

2、md5sum命令的语法格式

SYNOPSIS
    md5sum [OPTION]... [FILE]...

3、md5sum命令的选项说明

  • -b :以二进制模式读入文件内容
  • -t:以文本模式读入文件内容
  • -c :根据已生成的md5值,对现存文件进行校验
  • --status:校验完成后,不生成错误或正确的提示信息,可以通过命令的返回值来判断。

4、md5sum命令的实践操作

范例1:不加参数,直接生成文件md5 值(md5sum file

cd && rm -rf /test  -->将之前的实验环境删除掉。提示:rm -rf 谨慎使用!
mkdir /test && cd /test 
touch file.txt
md5sum file.txt  -->直接生成文件md5值
echo "I love linux"  >>file.txt
!md5  -->再次查看,md5值发生了变化

范例2:以文本模式或二进制模式读入文件并对其进行校验

file file.txt
md5sum file.txt
md5sum -b file.txt
md5sum -t file.txt

注意:虽然是不同的读入模式,但是在进行求 md5 的时候,是一样的,因为是逐位校验的。

范例3:md5值重定向到新文件中(可以留着做校验而用的)

md5sum file.txt > newfile.md5
md5sum file.txt
cat newfile.md5  -->难道手工校验?No,No,No。

范例4:md5 校验,(-c参数)如果一致,则返回OK,否则返回错误信息

md5sum -c newfile.md5  -->哈哈,手工校验太Low了,当然是有参数滴,-c参数校验
echo "Me too" >> file.txt  -->追加内容
cat file.txt  -->查看内容
!md5  ->再次校验

范例5:不显示校验信息,( --status 参数)以命令返回值来判断,校验一致返回 0 ,不一致返回 1

md5sum -c newfile.md5  
md5sum -c --status newfile.md5  
echo $?  -->不一致返回1
md5sum file.txt > newfile.md5  -->重新记录md5值
md5sum -c newfile.md5
md5sum -c --status newfile.md5
echo $?  -->不一致返回1

特殊说明

1)md5sum 是校验文件内容,与文件名是否相同无关
2)md5sum 值逐位校验,所以文件越大,校验时间越长。

命令总结

​ 通过 md5sum 来校验生成文件校验码,来发现文件传输(网络传输、复制、本地不同设备间的传输)异常造成的文件内容不一致的情况。

应用场景

​ 需要比较2个rc1.tar.gz 包和 rc2.tar.gz两个包,变更是不是和开发说的一致

1. 获取包,确保包正确无误

​ 获取包后,验证包的 MD5 值:

md5sum rc*.tar.gz

2. 解压缩到指定目录

​ 确保对应的目录存在

tar -zxvf  rc1.tar.gz -C ./test_rc1
tar -zxvf  rc2.tar.gz -C ./test_rc2

3. 递归生成各文件的的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

4. 比较两文件的MD5值

diff -c rc1_md5.txt  rc2_md5.txt

​ 或者用 UltraCompare Professional 比对结果

『MineGi有话说』:快来扫一扫下面链接的二维码,加入我们吧!

posted @ 2020-01-16 08:00  MineGi  阅读(2476)  评论(0编辑  收藏  举报