如何使用备份刷新磁盘上的磁状态?

Pet*_*ver 8 storage linux backup dd disk

我有几个大磁盘,上面有备份/存档材料。他们是ext4。关于那些将被存储几年而不再次读取整个磁盘的那些,我一直在考虑刷新磁盘磁性状态的方法。在我一直在寻找答案的任何地方,驱动器的保质期似乎都是一个有争议的问题,但似乎在存储几年(比如 5 年左右)之后,以某种方式刷新数据是明智的(? )

我已经看到这个建议:

dd if=/dev/sda of=/dev/sda
Run Code Online (Sandbox Code Playgroud)

安全吗?有用吗?

我想做的是除 afsck或 a之外的另一件事dd if=/dev/sda of=/dev/null,这两者都可能会发现磁盘上现有的磁漏。

我想要做的是在磁盘上的磁荷低于可读水平之前刷新磁数据。我怎样才能做到这一点?

pet*_*rph 8

通常,如果不读/写所有磁盘,就无法真正刷新整个磁盘。fsck不太可能提供您需要的内容 - 它适用于文件系统而不是底层设备,因此它主要只是扫描文件系统元数据(inode 和其他文件系统结构)。

badblocks -n可能是dd if=X of=X. 在任何情况下,您可能都希望使用大块来加快速度(dd例如bs=16M,因为badblocks这将读取-b 16777216,或-b $((1<<24))在合理的外壳中)。您可能还想使用conv=fsyncwith dd

至于dd使用相同输入和输出设备的安全性- 它从输入读取块并将其写入输出,所以它应该是安全的(我已经多次重新加密这样的加密分区,通过使用相同的底层设备和不同的密码,然后dd从一个到另一个)-至少对于某些类型的物理媒体:例如,对于带瓦片的驱动器,对我来说绝对不是很明显,它是 100% 防故障的。