Linux cksum命令 详解

cksum命令 用于计算文件的CRC校验和和字节数,常用于验证文件完整性。

命令简介

cksum(checksum的缩写)命令主要用于:

  • 计算文件的CRC(循环冗余校验)校验和
  • 显示文件的字节大小
  • 验证文件在传输或存储过程中是否损坏
  • 比较文件是否相同

命令语法

cksum [文件]...

选项说明

选项 说明
--help 显示帮助信息
--version 显示版本信息

输出格式

cksum命令的输出包含三个部分:

校验和 字节数 文件名
  • 校验和:基于CRC算法的32位校验和值
  • 字节数:文件的字节大小
  • 文件名:被计算的文件名称

使用示例

1. 计算单个文件的校验和

基本用法是计算单个文件的CRC校验和:

cksum document.txt
4234567890 1024 document.txt

输出说明:

  • 4234567890 - CRC校验和
  • 1024 - 文件大小(字节)
  • document.txt - 文件名

2. 计算多个文件的校验和

一次计算多个文件的校验和:

cksum file1.txt file2.txt file3.txt
4234567890 1024 file1.txt
5234567891 2048 file2.txt
6234567892 512 file3.txt

3. 验证文件完整性

通过比较校验和验证文件是否完整:

# 计算原始文件校验和
cksum original.txt > original.cksum

# 传输文件后验证
cksum received.txt
cat original.cksum

比较两个校验和是否相同,如果相同则文件完整。

4. 结合find命令批量计算

使用find命令查找特定文件并计算校验和:

find . -name "*.txt" -exec cksum {} \;

5. 使用管道处理

结合其他命令使用管道:

ls *.txt | xargs cksum

6. 创建校验和文件

创建包含多个文件校验和的清单:

cksum *.txt > checksums.txt
cat checksums.txt

7. 验证校验和文件

使用校验和文件验证当前文件:

# 创建校验和文件
cksum *.txt > original_checksums.txt

# 稍后验证文件是否改变
cksum *.txt > current_checksums.txt
diff original_checksums.txt current_checksums.txt

CRC算法说明

CRC(循环冗余校验)是一种错误检测码,常用于检测数据在传输或存储过程中的意外更改。

cksum命令使用的CRC算法基于ISO 8802-3:1989标准中定义的以太网CRC32多项式。

特点:

  • 能够检测所有单比特错误
  • 能够检测所有双比特错误
  • 能够检测任意奇数个错误
  • 能够检测大多数突发错误

与其他校验命令的比较

命令 算法 输出长度 特点
cksum CRC32 32位 POSIX标准,快速,适合基本完整性检查
md5sum MD5 128位 较高的碰撞抵抗,但已发现安全性漏洞
sha1sum SHA-1 160位 比MD5更安全,但也被发现存在漏洞
sha256sum SHA-256 256位 高安全性,目前推荐用于安全敏感场景
sha512sum SHA-512 512位 最高安全性,计算开销较大

实际应用场景

1. 文件传输验证

在文件传输前后计算校验和,确保文件完整:

# 发送方
cksum large_file.dat > checksum.txt
# 传输 large_file.dat 和 checksum.txt

# 接收方
cksum large_file.dat
cat checksum.txt

2. 备份验证

验证备份文件的完整性:

# 创建备份时记录校验和
cksum important_file.* > backup_checksums.txt

# 恢复时验证
cksum important_file.* > restore_checksums.txt
diff backup_checksums.txt restore_checksums.txt

3. 软件分发验证

验证下载的软件包是否完整:

# 下载文件和其校验和
# 然后验证
cksum software_package.tar.gz
# 与官方提供的校验和比较

注意事项

  • CRC校验主要用于检测意外错误,不适用于安全性要求高的场景
  • 对于安全性要求高的场景,建议使用SHA-256或SHA-512
  • cksum计算的校验和可能在不同系统间有所差异
  • 大文件计算校验和可能需要较长时间
  • 校验和文件本身也需要妥善保管,避免被篡改

相关命令

  • md5sum - 计算MD5校验和
  • sha1sum - 计算SHA-1校验和
  • sha256sum - 计算SHA-256校验和
  • sum - 计算简单校验和
  • cmp - 逐字节比较两个文件
  • diff - 比较文件的差异