Linux cksum命令介绍
cksum是英文单词checksum的缩写,意思是校验和。cksum命令可以计算和验证文件的校验和,它使用的算法是循环冗余校验(Cyclic Redundancy Check,CRC)。CRC是一种常用的错误检测技术,它可以检测数据传输或存储过程中的错误。cksum命令可以支持多种不同的CRC算法,例如CRC-32、MD5、SHA-1等,用户可以通过选项来指定要使用的算法。cksum命令的输出包括三个部分:校验和、文件字节数和文件名。如果没有指定文件名,或者文件名为-,cksum命令会从标准输入读取数据。cksum命令通常用于确保通过不可靠的方式(例如网络)传输的文件没有被损坏,通过比较接收到的文件和原始文件的cksum输出来验证文件的完整性。
Linux cksum命令适用的Linux版本
cksum命令是GNU coreutils的一部分,它是Linux系统中基本的文件、shell和文本操作工具的集合。因此,cksum命令可以在大多数Linux发行版中使用,例如Ubuntu、Debian、Fedora、CentOS等。如果某些Linux版本没有预装cksum命令,可以通过包管理器来安装coreutils包。例如,在CentOS 7中,可以使用yum命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo yum install coreutils
在CentOS 8中,可以使用dnf命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install coreutils
Linux cksum命令的基本语法
cksum命令的基本语法格式如下:
cksum [选项]... [文件]...
其中,选项可以用来指定要使用的CRC算法、输出格式、校验模式等,文件可以是一个或多个要计算或验证校验和的文件名,如果没有指定文件名,或者文件名为-,cksum命令会从标准输入读取数据。
Linux cksum命令的常用选项说明
cksum命令的常用选项有以下几个:
选项 | 说明 |
---|---|
-a, --algorithm=TYPE | 指定要使用的CRC算法,可以是sysv、bsd、crc、md5、sha1、sha224、sha256、sha384、sha512、blake2b或sm3,其中sysv和bsd分别相当于sum -s和sum -r,crc相当于cksum,md5、sha1、sha224、sha256、sha384、sha512和blake2b分别相当于md5sum、sha1sum、sha224sum、sha256sum、sha384sum、sha512sum和b2sum,sm3是一种中国国家标准的哈希算法,只能通过cksum命令使用 |
-b, --base64 | 以base64编码输出校验和,而不是十六进制 |
-c, --check | 从文件中读取校验和并进行验证,文件的格式应该是cksum命令或其他相似的程序的输出 |
-l, --length=BITS | 指定校验和的位数,必须是8的倍数,且不能超过blake2算法的最大位数 |
--raw | 以二进制格式输出校验和,而不是十六进制 |
--tag | 以BSD风格的格式输出校验和,这是默认的格式 |
--untagged | 以反转的格式输出校验和,不包含算法类型 |
在验证模式下,cksum命令还有以下几个选项:
选项 | 说明 |
---|---|
--ignore-missing | 不报告或返回缺失文件的错误 |
--quiet | 不打印验证成功的文件的信息 |
--status | 不输出任何信息,只通过返回值表示验证结果 |
--strict | 如果校验和文件的格式不正确,返回非零值 |
-w, --warn | 警告校验和文件的格式不正确 |
Linux cksum命令的实例
下面是一些使用cksum命令的实例:
计算文件的校验和和字节数
[linux@bashcommandnotfound.cn ~]$ cksum file1
1234567890 1024 file1
这个命令会计算file1文件的校验和和字节数,使用的是默认的CRC-32算法,输出的格式是BSD风格的。
计算标准输入的校验和和字节数
[linux@bashcommandnotfound.cn ~]$ echo "Hello world" | cksum
222957957 12
这个命令会计算标准输入的校验和和字节数,使用的是默认的CRC-32算法,输出的格式是BSD风格的。
使用MD5算法计算文件的校验和
[linux@bashcommandnotfound.cn ~]$ cksum -a md5 file1
MD5 (file1) = 0a4d55a8d778e5022fab701977c5d840 1024 file1
这个命令会使用MD5算法计算file1文件的校验和,输出的格式是BSD风格的。
使用base64编码输出文件的校验和
[linux@bashcommandnotfound.cn ~]$ cksum -b file1
EjRWeJ63lQIvqwGXd8XaQD 1024 file1
这个命令会使用base64编码输出file1文件的校验和,使用的是默认的CRC-32算法,输出的格式是BSD风格的。
从文件中读取校验和并进行验证
1234567890 1024 file1
222957957 12 file2
[linux@bashcommandnotfound.cn ~]$ cksum -c checksums.txt
file1: OK
file2: OK
这个命令会从checksums.txt文件中读取校验和并进行验证,如果验证成功,会打印OK,如果验证失败,会打印FAILED。
以反转的格式输出文件的校验和
[linux@bashcommandnotfound.cn ~]$ cksum --untagged file1
1234567890 1024 file1
这个命令会以反转的格式输出file1文件的校验和,不包含算法类型,使用的是默认的CRC-32算法。
Linux cksum命令的注意事项
使用cksum命令时,需要注意以下几点:
- cksum命令只能检测文件是否被损坏或篡改,不能保证文件的安全性或完整性,因为不同的文件可能有相同的校验和,而且校验和本身也可能被伪造或修改。
- cksum命令支持的CRC算法有不同的强度和性能,一般来说,校验和的位数越长,错误检测的能力越强,但计算的速度也越慢。在选择CRC算法时,需要根据具体的需求和场景进行权衡。
- cksum命令的输出格式和其他类似的程序(例如md5sum、sha1sum等)的输出
评论区