校验和是干什么的
哈希摘要把任意大小的文件压成定长字符串,内容变一个字节结果就完全不同,因此可以用来验证完整性:下载后与官方值比对、迁移后确认两端文件一致、分发前生成清单供接收方核对。sha256sum 与 md5sum 用法几乎一样,区别在强度——SHA-256 用于对抗篡改,MD5 仅在需要与老系统比对时保留使用。
基本信息
| 生成摘要 | sha256sum file、md5sum file |
|---|---|
| 批量校验 | sha256sum -c SHA256SUMS |
| 批量生成 | find 目录 -type f -exec sha256sum {} + > 清单 |
| 输出格式 | 摘要 + 两空格 + 文件名 |
| 目录校验 | 先生成清单文件再分发核对 |
| 权限要求 | 普通用户,需对目标文件可读 |
典型使用场景
- 下载安装包或 ISO 后校验完整性
- 把内网补丁库生成清单,分发时让接收方自行核对
- 数据迁移前后对比两端文件,确认没有漏拷或损坏
- 归档介质定期抽检,发现静默损坏
- 自动化部署脚本里校验构件摘要,避免使用被替换的包
典型用法
典型用法
sha256sum app.tar.gz # 单文件摘要
sha256sum app.tar.gz > app.tar.gz.sha256 # 生成清单,随文件一起分发
sha256sum -c app.tar.gz.sha256 # 接收方校验,输出 OK 或 FAILED
find /dist -type f -name '*.iso' -exec sha256sum {} + > /tmp/iso.sha256 # 批量生成目录清单
sha256sum -c /tmp/iso.sha256 2>/dev/null | grep -v OK # 只挑出不一致的条目跨机器比对与注意点
跨机器比对与注意点
cd /dist && sha256sum -c /tmp/iso.sha256 # 清单里是相对路径,校验前先切到对应目录
md5sum file1 file2 # 一次算多个文件,便于快速比对
sha256sum a.bin | awk '{print $1}' > a.sum; sha256sum b.bin | awk '{print $1}' > b.sum; diff a.sum b.sum
find /data -type f -size +1G -exec sha256sum {} + > big.sha256 # 只对大文件算摘要,控制耗时输出与判读
| 输出 | 含义 | 处置 |
|---|---|---|
| 摘要 文件名 | 单文件或批量生成的格式 | 与官方值逐字符比对,长度固定 |
| 文件名: OK | 内容与清单一致 | 校验通过 |
| 文件名: FAILED | 内容与清单不符 | 文件被改或损坏,重新获取 |
| 找不到文件 | 清单中的相对路径不匹配 | 先 cd 到清单所在目录再执行 |
| 无任何输出 | 路径写错或权限不足 | 用 ls 确认文件存在 |
校验只能证明内容与清单一致,不能证明来源可信:清单本身也要来自可信渠道,否则被替换的文件配上被替换的摘要依然『校验通过』。
对大目录做全量摘要耗时明显:按需限定文件类型与大小(如 find 加 -size 条件),把结果落盘缓存,避免每次巡检重复计算。