对于干涸的驱动器(有越来越多的坏扇区),在 ext4 日志分区上,cp
操作有时会完成而不会出现错误,但写入的数据可能是错误的,或者在文件创建后无法读取(读取部分后出现无效参数错误)。
是否有一个文件系统可以防止此类事件发生(可能是 ZFS)?
cp
或者,在我删除源之前,我可以使用任何命令行应用程序来代替,以检查复制的数据是否正确?
我可以对源文件和新创建的文件进行 md5 处理,但这听起来像是黑客行为。
谢谢。
更新:我想我没有充分解释我为什么要问这个问题,因此每个人都假设了一些不存在的事情。
我愿意不是想继续使用此驱动器。从我注意到问题的那一刻起,此驱动器就已断开连接。我想要的是防止此处发生的情况再次发生在其他驱动器上。
我有一个脚本,它使用 cp 定期将一些文件从驱动器 1 复制到驱动器 2,然后很快从驱动器 2 复制到驱动器 3。我遇到的问题是,cp 从驱动器 1 复制到驱动器 2 时没有发出任何抱怨,即使在将驱动器 2 上的数据复制到驱动器 3 时无法读取数据。此时,我从驱动器 1 复制的数据已被删除(因为我需要可用空间,并且我的脚本没有报告任何错误,因此我认为驱动器 2 上的数据没有问题)。所以我丢失了文件。
所以我的问题是:什么是防止将来再次发生这种情况的最佳方法?我应该只使用带有校验和的文件系统,还是使用可以自行执行校验和的复制工具?
答案1
将其重新安装为只读并复制您的当前数据。
这是处理故障驱动器的唯一明智之举。
任何继续使用它的尝试都是疯狂的。
答案2
没有一个文件系统可以防止故障硬盘发生故障,最多它们会通过校验和让您知道数据错误,ZFS 和 Btrfs 都支持校验和,我相信 EXT4 正在努力添加校验和。
唯一能做的就是在新驱动器彻底失效并丢失所有数据之前,获取一个新的驱动器并从旧驱动器复制数据。
关于cp
你可以使用rsync
复制文件,复制完成后,再次运行它,如果数据没有改变,那么就不会复制任何内容,你就会知道复制是正确的,如果不是,它只会复制文件的不同部分。
我不知道您为什么要继续使用该驱动器,只要更换它就可以节省大量时间并避免混乱。