我正在尝试从损坏的 3TB 驱动器中恢复数据。我在用着解救制作它的图像,但需要很长时间,而且存在很多读取错误。我想知道我是否可以对我已经复制的前 200GB(其中有大的整体)有一些运气。我用以下命令读取分区表g磁盘并找到了我有兴趣阅读的 ext4 文件系统的偏移量。然后创建了循环设备,以便有一种与分区交互的好方法:
sudo losetup -f --show -o $((xxxxxxxxxxx*512))
sudo tune2fs -l /dev/loop16
给我一些信息,所以我认为我走在正确的轨道上。
不幸的是,由于文件系统错误,我无法安装它e2fsck不会修复任何问题,因为它试图读取超出图像文件边界的内容。我想分区的后面区域可能有一些重要的文件系统数据。您对如何欺骗系统忽略错误并尝试使用不完整的 inode 结构和截断的图像有什么建议吗?
谢谢。
答案1
如果镜像尺寸太小,可以使用fallocate
或truncate
使其变大,或者使用dmsetup
创建线性设备映射来创建虚拟的更大设备。
$ ls -lh somefile
-rw-r--r-- 1 user user 200G Sep 9 13:27 somefile
$ truncate -s 2T somefile
$ ls -lh somefile
-rw-r--r-- 1 user user 2.0T Sep 9 13:28 somefile
要ddrescue
在第一遍中跳过坏区域,请尝试类似的操作--min-read-rate=10M
。
至于循环设备,它应该是只读的,或者对图像的副本进行读写,或者使用写时复制覆盖进行实验。否则,您可能最终会修改图像,并且必须重新执行此操作,这是一个坏主意,因为源驱动器已经快要死了。