是否可以将使用 dd 创建的磁盘映像安装到已安装的外部 USB 硬盘上的目录?

Kee*_*ood 4 linux hard-drive partitioning dd slackware

我有一个我的 home ( /dev/sda3) 分区的映像,这是我使用“dd”命令创建的。

dd if=/dev/sda3 of=/path/to/disk.img
Run Code Online (Sandbox Code Playgroud)

我已经通过 gparted 删除了主分区以扩大我的/dev/root分区。然后我重新创建了比/dev/sda3我备份到图像的分区更小的分区。

我想知道因为我有一个 2TB 的外置硬盘,是否可以将我备份的图像安装在外置硬盘上,然后将文件复制到/home目录中。由于外部硬盘驱动器已经处于“安装状态”,我不确定这是否是一个好主意,安装在已安装的设备上。

  • 我正在运行 Slackware 13.37(64 位)。
  • 在所有分区上使用 ext4。
  • 使用 gparted live cd 调整根分区的大小。

我试过了:

mount -t ext4 /path/to/disk.img /mng/image -o loop
Run Code Online (Sandbox Code Playgroud)

它给了我一个 fs 错误(错误的 fs 类型、错误的选项、dev/loop/0 上的超级块错误)

然后我做了

dmesg | tail
Run Code Online (Sandbox Code Playgroud)

输出:

EXT4-fs (loop0) :坏几何:块数 29009610 超过缺陷大小(1679229 个块)

我不知道该怎么办,我想/home从备份的图像中恢复我的数据。

[更新] : * disk.image 在我的 USB 16GB 闪存驱动器上。图像大小约为 6GB。该图像是从一个大约 100GB 的已删除分区创建的,现在它减少到大约 80GB。

[更新]:我今天试过了: LQWiki:一些 dd 示例 说:

您不想通过将分区表从较大的驱动器写入较小的驱动器来告诉驱动器它比实际更大。驱动器的前 63 个扇区是空的,除了扇区 1,即 MBR。

dd if=/dev/sda skip=2 of=/dev/sdb seek=2 bs=4k conv=noerror
Run Code Online (Sandbox Code Playgroud)

然后我尝试挂载/dev/sda3/home. dmesg | tail输出错误“组描述符已损坏!”

然后我尝试:

fsck.ext4 -y -f /dev/sda3
Run Code Online (Sandbox Code Playgroud)

它输出了大量的固定问题和数百万个以光速下降的数字。

之后我成功挂载/dev/sda3/home,但主目录中没有数据。只有一些名为“lost+found”的目录也是空的。

小智 5

您可以跳过第一步,只需:

须藤lostup /dev/loop0 /path/to/disk.img

mkdir /mnt/image
sudo mount /path/to/disk.img /mnt/image
Run Code Online (Sandbox Code Playgroud)