md5sum 是一个常用的工具,用于计算和校验文件的 MD5 校验值。MD5 校验值是一种 128 位哈希值, 用于验证文件的完整性,确保文件在传输或存储过程中未被篡改或损坏。以下是 md5sum 的基本用法及高级技巧。
1. 基本用法
(1) 计算单个文件的 MD5 值
md5sum filename
输出格式如下:
d41d8cd98f00b204e9800998ecf8427e filename
- d41d8cd98f00b204e9800998ecf8427e 是文件的 MD5 哈希值。
- filename 是文件名。
(2) 批量计算多个文件的 MD5 值
md5sum file1 file2 file3
输出示例:
d41d8cd98f00b204e9800998ecf8427e file1
e99a18c428cb38d5f260853678922e03 file2
ab56b4d92b40713acc5af89985d4b786 file3
(3) 将 MD5 值保存到文件
可以将 MD5 校验值导出到一个校验文件(通常以 .md5 结尾),方便以后校验:
md5sum file1 file2 > files.md5
生成的 files.md5 文件内容示例:
d41d8cd98f00b204e9800998ecf8427e file1
e99a18c428cb38d5f260853678922e03 file2
(4). 校验文件的完整性 (非常好)
若已有一个校验文件(如 files.md5),可以用以下命令验证这些文件
是否完整:
md5sum -c files.md5
输出示例:
file1: OK
file2: OK
file3: FAILED
- OK 表示校验成功,文件未损坏。
- FAILED 表示文件不匹配,可能损坏或被篡改。
2 高级用法
(1). 校验指定路径的文件
如果文件路径较长或者文件名复杂,可以用相对路径或绝对路径进行校验。例如:
md5sum /path/to/file > checksum.md5
md5sum -c checksum.md5
(2). 校验子目录中的所有文件
如果文件分布在多个子目录
中,可以结合 find 命令对所有文件生成 MD5 校验值:
find . -type f -exec md5sum {
} + > all_files.md5
find . -type f
查找当前目录下的所有文件。
--exec md5sum {} +
对每个文件计算 MD5 值。
生成的 all_files.md5 可用于后续校验:
md5sum -c all_files.md5
(3) 比较两个文件是否相同
md5sum file1 file2
如果两个文件的 MD5 值相同,则文件内容完全一致。
(4). 从网络下载后验证文件
许多网站会提供文件的 MD5 校验值供用户验证。下载文件后,可以用 md5sum 对比网站提供的值:
md5sum downloaded_file
将输出的 MD5 值与网站提供的值对比,确认文件未被篡改。
(5) 对大文件逐步计算 MD5 值
对于超大的文件,可以使用 md5sum 结合 split 分块校验每一部分:
- 1.将大文件分割:
split -b 1G largefile part_
这会将 largefile 切分为 1GB 大小的部分,命名为 part_aa, part_ab 等。
- 2.计算每部分的 MD5 值
md5sum part_*
- 3.校验原始文件: 如果需要验证整个文件的 MD5 值,可以使用工具如 cat 将文件拼接回来并计算:
cat part_* > reconstructed_file
md5sum reconstructed_file
(6). 校验多个 .tar 分卷文件
对 .tar 分卷文件,可以使用 md5sum 校验每个分卷是否完整:
针对所有分卷生成 MD5 文件:
md5sum file.part* > pa