Linux 文件校验入门:用 SHA-256 检查备份是否一致
复制备份或传输文件后,文件名和大小一致并不能证明内容完全相同。用 SHA-256 计算文件摘要,再与可信的原始摘要比较,可以帮助发现内容在传输或存储过程中发生的变化。下面用一个小实验理解这个过程。
一、准备一个独立的练习目录
以下命令适用于安装了 GNU coreutils 的 Linux 环境。请在自己的工作目录中新建一个未使用的目录,避免覆盖现有文件:
mkdir checksum-demo
cd checksum-demo
printf 'backup sample\n' > notes.txt
sha256sum notes.txt
输出包含一串十六进制摘要和文件名。摘要由文件内容计算得到,即使只改变一个字节,校验值通常也会明显变化。文件名本身不是内容的一部分,因此同样内容复制到另一文件后,摘要应相同。
二、比较原文件和副本
cp notes.txt notes-copy.txt
sha256sum notes.txt notes-copy.txt
观察两行输出:前面的摘要应一致,后面的文件名不同。现在只改动练习副本,再计算一次:
printf 'new line\n' >> notes-copy.txt
sha256sum notes.txt notes-copy.txt
这次两个摘要应不同。这里我们修改的是示例副本;处理重要文件前,应确认路径并保留原始备份。
三、保存校验清单并验证
在备份尚未发生变化时,可以把原文件的摘要保存下来:
sha256sum notes.txt > checksums.sha256
sha256sum -c checksums.sha256
若文件与清单匹配,结果会显示 notes.txt: OK。清单包含摘要和文件名,验证时相对路径按执行命令时的当前目录解析。移动到另一台机器验证时,要让清单中的相对路径对应待检查文件,并保持文件内容未变。
四、验证真正的备份副本
可以新建一个空的 restore-check 目录,把原文件和清单一起复制进去,再进入该目录运行 sha256sum -c checksums.sha256。这种做法检查的是副本,与在源目录反复检查原件相比,更接近恢复时的实际操作。确保目录名和路径正确,不要覆盖已有备份。
如果显示失败,先检查文件是否损坏、传输是否完整、路径是否指向预期文件,以及文件是否被正常更新。重新生成清单只能记录当前内容,不能证明当前内容就是原始版本;应保留此前可靠的校验值用于比较。
五、理解校验的边界
摘要相同可以提供很强的内容一致性证据,但它不等于备份一定可恢复:压缩包可能缺少需要的文件,数据库备份也可能无法正常导入。因此除了校验,还应定期做恢复演练。
下载文件时,如果文件和校验值来自同一个不可信来源,二者可能一起被替换。应通过可信渠道核对发布方提供的摘要,必要时进一步验证数字签名。把“保存可信摘要、检查副本、尝试恢复”连起来,备份检查才更有实际价值。
- 点赞
- 收藏
- 关注作者
评论(0)