在其上使用dd后恢复HDD


0

当我想在USB驱动器上放入ISO时,不小心dd在HDD(/dev/sdc)上使用了。我试着环顾四周,发现如果数据被覆盖,那么我就搞砸了。

有没有办法恢复数据?有什么我可以做的吗?


ISO的大小有限,仅覆盖一定数量的硬盘即可。您可以尝试使用分区恢复软件(例如testdisk),查看完整的分区。您将需要启动实时CD,并且可能需要在启动CD之后安装恢复软件。
AFH 2016年

确切地说,您运行了什么dd命令?
Cestarian '16

我使用了以下命令:dd bs = 4M of = file if = / dev / sdc
Guy

您的意思是:“ if = file of = / dev / sdc”?因为如果您实际上执行了“ of = file”,那么它根本就不会碰到您的sdc分区。
headkase '16

2
您应绝对包括dd直接在问题中使用的精确(和正确;)命令。评估损坏是必不可少的信息。还告诉我们输入文件有多大。
Daniel B

Answers:


1

数据销毁器将覆盖硬盘驱动器上的扇区。无法恢复覆盖的扇区。由于Linux在扇区之间分配文件的方式(这就是为什么ext分区不需要进行碎片整理的原因),大多数文件的所有内容都不可能幸免。从备份还原,您确实创建了它们吗?如果您不这样做,您只是知道为什么要这么做。抱歉。


不是数据销毁者,dd。摘自维基百科:“名称dd是在IBM作业控制语言(JCL)中找到的DD语句的代名词,其中的缩写代表“数据描述”。该命令的语法比其他Unix命令更类似于JCL语句,因此语法可能只是在开玩笑。”
Cestarian '16

4
粗心使用时,“数据销毁者”就是“它做什么”。在这种情况下。
headkase '16

0

仅当部分或大部分数据仍然存在时才能保存数据。

这是一个简单的蛮力实时测试(使用pvlzop),以查看dd的距离(和距离):

hd=/dev/sdc   # change to whatever device or partition needs testing.
pv -EcN raw ${hd} | lzop |  pv -cN compressed | wc -c

在尚未被dd擦除的160GB硬盘驱动器上,经过一分钟后,测试如下所示:

raw: 5.12GiB 0:01:11 [46.1MiB/s] [==>              ]  3% ETA 0:33:15
compressed: 4.81GiB 0:01:11 [45.9MiB/s] [    <=>         ]

请注意,压缩后的数字如何与原始数字非常接近。只要是完成工作的情况,那么大多数数据仍然存在。该百分比将根据发生故障之前硬盘驱动器的满度而变化,即,如果HD或分区仅占10%,则来自lzop的 8%是正常的。它还取决于填充HD的数据类型,幸运的是lzop压缩能力很弱,这在很大程度上起到了作用。

让我们尝试使用全零:

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] [     <=>         ]

压缩的大小是现在的小于1%的原始。如果整个硬盘都这样,则数据为kaput

(注意:读取更大的硬盘需要更多时间,因此可以通过采样来改进此方法。我们可以使用dd读取n个块,向前跳过10n个块,然后将其馈送到上面的原始输入中,而不是读取每个块。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.