在Linux下掌握多种文件完整性检验工具的使用方法,可以有效保障文件在传输、存储过程中的完整性和真实性.
Linux 下提供了多种文件完整性检验工具,最常用的包括 cksum、md5sum、sha1sum、sha256sum 等。它们的使用方法非常相似,主要通过计算文件的哈希值或校验和,并与预期值比对,来判断文件是否被篡改或损坏。以下是这些工具的具体使用方法。
1. 计算文件的校验值
基本语法
工具名 文件名...
例如:
md5sum file.txt
sha256sum file.iso
cksum file.dat
输出格式一般为:
· md5sum/sha256sum 等:哈希值 文件名
· cksum:校验和 字节数 文件名
示例
$ md5sum document.pdf
d41d8cd98f00b204e9800998ecf8427e document.pdf
$ cksum document.pdf
4294967295 1024 document.pdf # 仅为示例
2. 生成校验和文件
通常我们会将所有待校验文件的哈希值保存到一个文件中,以便后续验证。
md5sum file1.txt file2.txt > checksum.md5
或者对当前目录所有 .iso 文件生成校验和:
sha256sum *.iso > sha256sums.txt
校验和文件的内容格式与命令输出一致,每行一条记录。
3. 验证文件完整性
使用 -c 选项,让工具根据校验和文件自动检查文件。
md5sum -c checksum.md5
sha256sum -c sha256sums.txt
输出示例:
file1.txt: OK
file2.txt: 失败
md5sum: 警告:2 个校验和不匹配
· OK:文件与记录一致。
· 失败:文件已被修改或丢失。
4. 常用选项
选项 作用
-c 从校验和文件中读取并验证文件
-b 以二进制模式读取文件(默认,与文本模式无差异)
-t 以文本模式读取文件(Linux 下通常忽略)
--quiet 验证时只输出错误信息(不显示每个文件的 OK 状态)
--status 不输出任何内容,仅通过退出码表示结果(适合脚本)
5. 实际场景示例
场景一:下载软件后验证 ISO 镜像
# 官方提供了 sha256sums.txt
sha256sum -c sha256sums.txt --quiet
# 若无输出,说明所有文件完整
场景二:备份前生成校验和,备份后验证
# 生成校验和
find /important/data -type f -exec sha256sum {} \; > backup.sha256
# 备份完成后,在备份目录中验证
cd /backup/location
sha256sum -c /path/to/backup.sha256
场景三:脚本中判断文件是否改变
if echo "expected_hash filename" | sha256sum -c --status; then
echo "文件完整"
else
echo "文件已被修改"
fi
6. 不同工具的简要对比
工具 算法 校验和长度 安全性 适用场景
cksum CRC-32 32位 低(易碰撞) 快速检查传输错误
md5sum MD5 128位 中等(可碰撞) 一般文件完整性校验
sha1sum SHA-1 160位 较弱(已弃用) 兼容旧系统
sha256sum SHA-256 256位 高 安全要求高的场景(推荐)
sha512sum SHA-512 512位 很高 极高安全需求
7. 注意事项
· 校验和文件内容:每行格式必须严格为“哈希值 文件名(相对路径或绝对路径)”。手动编辑时需保持空格分隔。
· 二进制与文本模式:Linux 下默认无区别,但跨平台(如 Windows)时可能需要 -b 确保一致性。
· 符号链接:工具默认对链接指向的文件内容进行校验,而非链接本身。
· 大文件:计算校验和会消耗 I/O 和 CPU,对大文件建议使用 pv 等工具监控进度:
pv largefile.iso | sha256sum
掌握这些工具的使用方法,可以有效保障文件在传输、存储过程中的完整性和真实性。