Linux 文件校验入门:用 SHA-256 检查备份是否一致

举报
yd_263910519 发表于 2026/10/30 10:09:57 2026/10/30
【摘要】 通过创建、复制和修改示例文件,学习使用 sha256sum 保存校验值、验证备份,并理解完整性检查的边界。

复制备份或传输文件后,文件名和大小一致并不能证明内容完全相同。用 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。这种做法检查的是副本,与在源目录反复检查原件相比,更接近恢复时的实际操作。确保目录名和路径正确,不要覆盖已有备份。

如果显示失败,先检查文件是否损坏、传输是否完整、路径是否指向预期文件,以及文件是否被正常更新。重新生成清单只能记录当前内容,不能证明当前内容就是原始版本;应保留此前可靠的校验值用于比较。

五、理解校验的边界

摘要相同可以提供很强的内容一致性证据,但它不等于备份一定可恢复:压缩包可能缺少需要的文件,数据库备份也可能无法正常导入。因此除了校验,还应定期做恢复演练。

下载文件时,如果文件和校验值来自同一个不可信来源,二者可能一起被替换。应通过可信渠道核对发布方提供的摘要,必要时进一步验证数字签名。把“保存可信摘要、检查副本、尝试恢复”连起来,备份检查才更有实际价值。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。