我有一个 SDD,上面有两个分区。第一个是 32G,第二个占用了驱动器的剩余空间。第一个是安装了 Ubuntu 的根分区。第二个是一般存储区域。
我无意中用这个命令将 dd 指向了这个 sdd:
dd if=/2g-ubuntu.iso of=/dev/sda
由于在物理磁盘开头写入的连续数据少于 3G,因此此覆盖从未到达第二个分区。因此,我立即卸载了驱动器,并且只将其安装在读取模式下。第二个分区的索引节点和区域上没有写入任何内容,因此这些文件未受影响。
testdisk 告诉我超级块已损坏。
我尝试读取所有备份超级块,但它们也已损坏。
所以看起来我必须依靠读取 inode 及其相应的区域数据来恢复文件。
是否有一个程序可以让我指向磁盘的该部分并收集所有文件?我查看过 testdisk,但它似乎只查找文件类型,但我需要它不加判断地查找每个文件。
故障排除 - 使用 dd 查找丢失的分区
from subprocess import Popen, PIPE
count = 0
skip32Gigs = 0
while 1:
dd_args = ["dd", "if=/dev/sda", "bs=512", "skip=" + str(skip32Gigs+count), "count=4"]
file_args = ['file', "-"]
print 'dd_args', dd_args
dd_process = Popen(dd_args, stdout=PIPE)
file_process = Popen(file_args, stdin=dd_process.stdout, stdout=PIPE)
dd_process.stdout.close()
out, err = file_process.communicate()
print out.split(), err
if "Linux" in out.split():
break
count += 1
xxx