文档首页> 技术教程> 用 md5sum 与 sha256sum 校验文件完整性

用 md5sum 与 sha256sum 校验文件完整性

发布时间:2026-01-04 08:13        更新时间:2026-01-04 14:36
文件只要经过一次网络传输,就值得做一次完整性校验。校验和相当于文件的指纹:源端算一次,落地端再算一次,两串值一致才说明传输没有引入损坏。 两条命令的基本用法 `md5sum 文件名` 输出一串 32 位十六进制值,`sha256sum 文件名` 输出 64 位,输出都是两列:前面校验值,后面文件名。下载系统镜像、安装包时,发布方一般会附一份校验值文件,落地后执行 `sha256sum -c 镜像名.sha256`,输出 OK 即通过。-c 模式按文件名找文件,所以要在校验清单对应的目录下执行。校验值别用肉眼比对,六十四位字符串肉眼靠不住,交给 -c 或 diff 才是正路,结果贴进工单留痕。 为什么更推荐 sha256 MD5 算法已被证明可以构造碰撞,安全意义上防不了篡改,只能防传输损坏;而 sha256 的计算开销在现代 CPU 上只比 MD5 略高,几乎无感。日常完整性检查 md5sum 依然实用,但涉及安全敏感文件(比如外来二进制包、恢复用的备份)一律用 sha256sum,成本相同,强度更高。 批量校验的写法 目录里几十个文件逐个算太慢,一条命令生成整个目录的校验清单: ```bash find /data/backup -type f -name '*.tar.gz' -exec sha256sum {} \; > /data/backup/sha256.txt ``` 迁移或恢复之后执行 `sha256sum -c /data/backup/sha256.txt`,所有文件逐个报 OK 或 FAILED,坏在哪个文件一眼可见。哈希值还能当去重依据:同一目录里值相同的文件就是重复内容,`sha256sum * | sort | uniq -w64 -D` 能列出重复组,清理空间时很好用。 两个实用提醒:校验清单不要只留在被校验文件所在的同一块盘上,异地再存一份才有意义;从其他系统拷来的校验文件若带不同换行符会导致比对全部报错,用 `dos2unix` 转一下即可。把生成清单、传输清单、异地存清单写进备份完成后的自动动作,一步都别省,恢复时才能理直气壮。把"先算校验和再传输"固化进脚本,比传输完再争论哪个环节出了问题有效得多。