当我想将 ISO 放在 USB 驱动器上时,我意外地dd
在 HDD 上使用过 ( )。我试着四处查看,发现如果数据被覆盖,那么我就完蛋了……/dev/sdc
有办法恢复数据吗?我能做什么?
答案1
Data Destroyer 会覆盖硬盘上的扇区。无法恢复被覆盖的扇区。由于 Linux 在扇区之间分配文件的方式(这就是 ext 分区不需要进行碎片整理的原因),大多数文件的所有内容不太可能都保留下来。从备份中恢复,您确实创建了它们,对吗?如果您没有这样做,您刚刚才知道为什么应该这样做。抱歉。
答案2
只有当部分或大部分数据仍然存在时,数据才可以被保存。
以下是一个简单的暴力实时测试(使用光伏和伊佐普)看看有多远(和多少)日得到:
hd=/dev/sdc # change to whatever device or partition needs testing.
pv -EcN raw ${hd} | lzop | pv -cN compressed | wc -c
在一块还没有被擦除的 160GB 硬盘上日一分钟后,测试结果如下:
raw: 5.12GiB 0:01:11 [46.1MiB/s] [==> ] 3% ETA 0:33:15
compressed: 4.81GiB 0:01:11 [45.9MiB/s] [ <=> ]
注意压缩这个数字非常接近生的数字。只要作业完成时情况如此,那么大部分数据仍然存在。百分比会根据故障发生前硬盘的容量大小而有所不同,即如果硬盘或分区的容量只有 10%,那么从伊佐普是正常的。这也取决于硬盘里填充的是哪种数据——幸运的是伊佐普是一个弱压缩机,在这里有很大帮助。
让我们用全零来尝试一下:
hd=/dev/zero # change to whatever device or partition needs testing.
pv -cN raw ${hd} | lzop | pv -cN compressed | wc -c
...8秒后显示:
raw: 6.81GiB 0:00:08 [ 891MiB/s] [ <=> ]
compressed: 31.8MiB 0:00:08 [4.06MiB/s] [ <=> ]
这压缩尺寸现在不到生的。如果整个硬盘都是这样,数据就完蛋了。
(注意:读取更大的硬盘需要更多时间,因此可以通过采样来改进此方法。我们可以使用这种方法,而不是读取每个块。日读书n块,跳过10n块,并将其喂给生的输入以上内容。)