我想在我可靠的设置中安装 opensuse。做的时候:
dd if=/path/to/downloaded.iso of=/dev/sdX bs=4M
我选择将 iso 放在硬盘而不是闪存驱动器上,我的所有数据都消失了。我可以恢复操作系统吗?我至少可以恢复我的 30 场黑胶唱片吗?
我想在我可靠的设置中安装 opensuse。做的时候:
dd if=/path/to/downloaded.iso of=/dev/sdX bs=4M
我选择将 iso 放在硬盘而不是闪存驱动器上,我的所有数据都消失了。我可以恢复操作系统吗?我至少可以恢复我的 30 场黑胶唱片吗?
dd
比rm
任何其他仅将文件系统中的块标记为可用的机制都要糟糕得多。dd
在磁盘或分区上逐字读取和写入,因此通过覆盖它不仅会删除文件系统上的文件,还会破坏文件系统上数据的组织方式和文件系统本身的信息。虽然某些数据结构(如EXT 超级块)具有一些冗余,但不允许恢复被覆盖的数据。取决于 的行为
dd
,即如果它用零填充分区的剩余空间并让其完成任务,则认为分区上的所有数据都丢失了。有这样一种说法,您仍然必须多次覆盖数据才能使数据恢复几乎不可能。它所基于的恢复技术不适用于现代磁盘,并且在其中一个答案中引用了 Peter Gutmann :
制作磁盘的原始副本并使用该副本进行恢复尝试的典型建议更具有误导性。对于发生故障的驱动器,这可能是一种可能的解决方案,但也会给驱动器带来很大压力,这可能会适得其反。在您的
dd
场景中,尽管这是不同的,并且看起来像是一种非常愚蠢的方法。dd
通过创建副本来恢复被覆盖的数据以dd
用于进一步的恢复方法?那不应该给你除了dd
之前写的以外的任何东西,对吧?现在当然,如果您想证明 Peter Gutmann 的或更高级的方法仍然适用于较新的驱动器,您只想从源驱动器读取而不写入到驱动器,以防止进一步覆盖数据。老实说,尝试恢复所有数据几乎是不可能的,浪费大量时间并绑定资源(驱动器无法使用,计算机必须继续恢复过程),您可以通过创建备份并更加小心地避免这种情况危险的命令。
这不是一个循序渐进的步骤,而是一些可能会让您走上正确道路的小建议。
如果使用 dd 将磁盘的原始副本制作到备用磁盘或新磁盘很重要。然后考虑断开原来的磁盘,以防止由另一个错误进行更多更改。(仅使用主磁盘在备用磁盘上进行恢复尝试。)在您的情况下,您只覆盖了磁盘的第一部分,等于 iso 的大小。
但是,这可能会混淆一些恢复工具。因此,对于这种情况,明智的做法是使用 dd 将 iso 的大小准确清零,然后使用工具尝试恢复分区。
好吧,我相信如果你谨慎行事,你有很大的机会恢复所有重要的东西。