在 btrfs 等文件系统上,您可以执行清理,它将检查所有数据以查看数据是否仍然与文件系统校验和匹配。
我想在备份之前检查 ext4 上的数据是否正确。
问题
ext4 没有文件系统校验和,但是可以制作类似的东西吗?
答案1
Ext4 没有与 ZFS 或 btrfs “scrub” 相当的功能,但是,最近的一个功能是元数据校验。使用它需要非常新内核和更新的 e2fsprogs。
您正在使用什么发行版?
答案2
@ewwhite 的回答是正确的。我只想强调:不 -数据目前无法在 ext4 或 XFS 中进行校验。我还找不到任何与 JFS 校验相关的内容。因此,到目前为止,唯一可靠的选择是检查 linux ZFS。BTRFS 目前不太稳定。
我之所以写上述内容,是因为我的路由器与 USB 外置驱动器之间刚刚出现了严重的静默写入损坏,现在我不再相信 USB 是一种可靠的互连。因此需要进行额外的校验和。(我的意思是驱动器完全正常,但路由器 USB 不稳定)
答案3
虽然传统文件系统(如 ext4 或 XFS)不支持数据校验和,但可以使用dm-integrity
在块级别(在文件系统本身下)添加校验和。
您可以使用integritysetup
向任何块设备添加校验和(注意:它将删除所有以前的数据)作为基于 mdadm 的阵列,或基于 LVM 的 RAID 阵列
答案4
您可以测试一些软件:
- https://github.com/trapexit/scorch
- https://github.com/rfjakob/cshatag
- https://github.com/maugier/shatag
- https://github.com/ambv/bitrot
- https://sourceforge.net/p/yabitrot/code/ci/master/tree/
- https://github.com/laktak/chkbit-py
基本上,它们都计算并保存文件的校验和,因此您可以稍后再次运行它并进行比较,查看两次运行之间某些校验和是否发生了变化。