md5sum是Linux下校验文件MD5最稳妥的命令,系统自带、POSIX兼容、格式统一;避免使用macOS的md5或第三方md5deep,注意空格/换行导致的校验失败,安全场景应优先用sha256sum。

md5sum 命令直接算,别用 md5 或 md5deep
Linux 下校验文件 MD5,md5sum 是最稳妥的选择。系统自带、POSIX 兼容、输出格式统一,md5(macOS 工具)或 md5deep(第三方)在多数发行版里压根没装,强行用反而报 command not found。
常见错误:复制网上 macOS 教程里的 md5 -r file,在 Ubuntu/CentOS 里直接失败;或者误以为 md5sum -b 是“二进制模式”就一定更准——其实默认就是按字节读,-b 只是显式声明,对结果无影响。
-
md5sum filename:输出标准格式,如d41d8cd98f00b204e9800998ecf8427e filename - 校验多个文件:
md5sum file1 file2 file3 - 想看进度(大文件):
pv bigfile | md5sum(需先apt install pv或yum install pv)
生成和比对 MD5 列表时,注意空格和换行陷阱
用 md5sum * 生成校验列表后存为 checksums.md5,后续用 md5sum -c checksums.md5 检查,这步极易出错。
典型问题:文件名含空格、中文或换行符时,md5sum * 输出的格式会被 shell 展开破坏,导致 -c 比对失败,报 md5sum: checksum mismatch 或 No such file,但实际文件完好。
- 安全做法:用
find . -type f -print0 | xargs -0 md5sum > checksums.md5,避免路径解析错误 - 检查时加
--quiet只显示失败项:md5sum -c --quiet checksums.md5 - 如果必须处理带空格的旧列表,先用
md5sum -c --ignore-missing checksums.md5看哪些真错了
md5sum 和 sha256sum 性能差不太多,但 MD5 已不推荐用于安全场景
单纯比速度:md5sum 确实略快于 sha256sum(尤其 SSD 上差距<10%),但这是拿安全性换来的微小收益。
真实风险:MD5 碰撞已被实操攻破(比如同 MD5 不同内容的 PDF),下载固件、镜像、密钥文件时,官方提供的校验值基本都换成了 sha256sum 或 sha512sum。硬用 md5sum 核对,等于把「防误传」和「防篡改」混为一谈。
- 下载 Linux ISO 后,优先核对官网提供的
SHA256SUMS文件:sha256sum -c SHA256SUMS - 若只有 MD5,仅限内网可信环境做完整性初筛,别用于验证签名或敏感配置
-
md5sum输出的哈希是 32 位十六进制,sha256sum是 64 位——长度本身就能帮你快速识别该用哪个命令
远程文件怎么校验?别先 wget 再算,浪费 IO
想校验一个 URL 对应的文件 MD5,有人习惯先 wget url 下来再 md5sum file,大文件白白多一次磁盘写入。
更直接的方式是让数据流经管道,不落地:
- 简单 URL:
wget -qO- https://example.com/file.bin | md5sum - 带重定向或证书问题时,换
curl -sL https://example.com/file.bin | md5sum - 注意:HTTP 响应头可能混入额外字符(如
Content-Encoding: gzip),若服务端返回压缩内容,md5sum算的是压缩后字节——和原始文件 MD5 不一致,这时得加--compressed(curl)或确认服务端是否禁用了压缩
MD5 校验本身很简单,难的是搞清你到底在防什么:传输出错?还是有人偷偷换了文件?后者的话,光靠 md5sum 就只是个心理安慰。









