当前位置: 首页 > news >正文

Linux中文件MD5校验

md5sum命令用于生成文件的md5数字摘要,并可以验证文件内容是否发生了改变,间接地还可以检验两个文件内容是否完全相同。因为md5sum是读取文件内容来计算校验码的,因此只能验证文件内容,而无法验证文件属性。

[root@xuexi ~]# cp -a /etc/fstab /tmp/fstab

[root@xuexi ~]# cp -a /etc/fstab /tmp/fstab1

生成文件的md5值。

[root@xuexi ~]# md5sum /tmp/fstab /tmp/fstab1
a612cd5d162e4620b442b0ff3474bf98  /tmp/fstab
a612cd5d162e4620b442b0ff3474bf98  /tmp/fstab1

发现这两个文件md5值完全一样,也就说明这两个文件完全相同。

由于生成的md5信息中,每个md5值后都紧跟着对应的文件的路径(可能是相对路径),于是将生成的md5保存到某个文件中,以后可以使用该文件来检查md5值对应文件内容是否发生了修改。

例如,将上述两个文件的md5信息保存到fs.md5sum中,然后使用"md5sum -c"可以检查源文件是否完整或是否被修改过。这个检查是内容上的,权限和属性等的改变不会影响md5值,所以不会检测出问题。

[root@xuexi ~]# md5sum /tmp/fstab /tmp/fstab1 >/tmp/fs.md5sum

[root@xuexi ~]# md5sum -c /tmp/fs.md5sum
/tmp/fstab: OK
/tmp/fstab1: OK

修改/tmp/fstab1的内容,然后再检测。

[root@xuexi tmp]# echo aaa >>/tmp/fstab1

[root@xuexi tmp]# md5sum -c /tmp/fs.md5sum
/tmp/fstab: OK
/tmp/fstab1: FAILED
md5sum: WARNING: 1 of 2 computed checksums did NOT match

当使用了"-c"选项时,还支持以下选项:

--quiet:不显示验证结果为OK的记录

--status:完全不显示任何信息,只能通过命令的退出状态码判断验证结果是否有failed。只要有一条failed记录,则状态码为1,否则为0。

[root@xuexi tmp]# md5sum --status -c /tmp/fs.md5sum
[root@xuexi tmp]#
echo $? 1

通过比较md5sum的值,可以判断出多个文件的内容是否完全一致,但肉眼判断并不方便,所以写出脚本批量判断。脚本见:shell脚本示例:批量比较多个文件的内容是否相同

相关文章:

  • IAAS,SAAS,PAAS, CaaS的区别
  • 对比 javascript url编码
  • Android -- Adapter
  • 基于webpack的几种静态资源的引入方案
  • redis集群搭建
  • 智能盒子大比拼:Fire TV vs. Apple TV vs. Roku 3 vs. Chromecast
  • 数据挖掘算法Analysis Services-基于SQL Server的数据挖掘
  • DataBase in Android
  • 日志收集方式总结(转载)
  • 编译脚本支持(Build script support)
  • Docker 后台进程参数-------更改Docker运行根目录的方法
  • Python 爬虫入门3种方法
  • GSSAPIAuthentication=no
  • 红帽推 Ansible Tower 3.1 扩展 DevOps自动化功能
  • 从边缘计算看移动化与云计算的融合之道
  • CEF与代理
  • E-HPC支持多队列管理和自动伸缩
  • Otto开发初探——微服务依赖管理新利器
  • Phpstorm怎样批量删除空行?
  • sessionStorage和localStorage
  • vue-router 实现分析
  • Vultr 教程目录
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 笨办法学C 练习34:动态数组
  • 订阅Forge Viewer所有的事件
  • 前端性能优化——回流与重绘
  • 删除表内多余的重复数据
  • 我有几个粽子,和一个故事
  • 延迟脚本的方式
  • 运行时添加log4j2的appender
  • 自定义函数
  • 自制字幕遮挡器
  • Nginx实现动静分离
  • 阿里云移动端播放器高级功能介绍
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #define 用法
  • #每日一题合集#牛客JZ23-JZ33
  • #微信小程序:微信小程序常见的配置传值
  • #微信小程序:微信小程序常见的配置传旨
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)memcache、redis缓存
  • .java 9 找不到符号_java找不到符号
  • .mysql secret在哪_MySQL如何使用索引
  • .NET CORE Aws S3 使用
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET中GET与SET的用法
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • [《百万宝贝》观后]To be or not to be?
  • [2016.7.Test1] T1 三进制异或