挂载使用partimage创建的NTFS镜像文件

挂载使用partimage创建的NTFS镜像文件

从我手头没有的旧磁盘中,我使用 .img 创建了一个名为 winxp.img 的文件partimage。正如文件名所示,该分区包含 Windows XP,并采用 NTFS 格式。

(该文件仅包含 4.6 GiB NTFS 分区,而不是整个磁盘。)

如何访问该映像中的文件而不将其恢复到物理磁盘上?

答案1

正如中提到的零件图像文档1 ,

(...) 从图像中提取文件也是不可能的。

但不必绝望!借助 Unix 哲学的力量 (“一切都是文件”),您无需为单独的分区分配磁盘空间即可访问文件。方法如下:

..0。你说你创建的图像partimage被命名为winxp.img它拥有一个备份4.6GiBNTFS分区。美好的。您的 Linux 系统上有超过 4.6 GiB 的可用空间吗?完美的! (否则,请获得一些可用空间。)您可以将存档的内容恢复partimage到一个“虚拟”文件,该文件将假装是一个真实的分区。

  1. 首先,您需要创建一个空文件至少 4.6 GiB 大小:

    dd if=/dev/zero of=dummy_disk.raw bs=1M count=4711
    

    (参数的值count来自向上舍入1024*4.6以达到 4.6 GiB 以上的数量。对于精确值,您需要知道原始分区的字节大小 - 但如果您有足够的可用空间,您可以简单地使用5K,为了安全起见。)

    现在,告诉partimage您将 NTFS 文件系统恢复到该虚拟空间。什么?它拒绝将普通文件视为硬盘分区?没问题 - 如果 Unix 说“一切都是文件”,那么磁盘句柄/dev/sda1也是一个文件 - 所以我们只需要扭转这种情况并提供一个“块设备”类型的文件partimage- 这就是环回设备构造派上用场(继续阅读)。

  2. 创建一个环回设备附加到您新创建的虚拟磁盘(这在大多数系统上需要 root 权限,因此sudo使用):

    sudo losetup -f --show dummy_disk.raw
    

    该命令将输出类似的内容/dev/loop0- 这是您需要提供的环回设备名称,partimage而不是真正的分区。您还可以通过运行来检查环回设备是否已附加到您的文件losetup -a- 这当然是可选的。

  3. 跑向partimage恢复将存档文件系统复制到虚拟文件(替换/dev/loop0为您在上一步中获得的名称):

    partimage restore /dev/loop0 winxp.img
    

    一旦成功完成,您的dummy_disk.raw文件将包含恢复的 NTFS 文件系统!您现在只需安装它即可访问文件:

  4. 假人。为此,您只需要一个空目录。您可以使用mkdir mountpoint现有的或使用现有的来创建它。有两种安装文件系统的替代方法:

    sudo mount -t ntfs-3g /dev/loop0 mountpoint
    

    (替换/dev/loop0为之前得到的设备名称)

    或者

    sudo mount -o loop -t ntfs-3g dummy_disk.raw mountpoint
    

    前一种方法将使用现有的环回设备,而后者将自动创建一个新的环回设备(资源使用差异可以忽略不计)。

就是这样!现在可以在该目录下访问存档的内容mountpoint

旁注:对于归档文件系统的未来任务,请考虑使用更新的工具,例如FSA归档器。我并不是说它是完美的,但至少它仍然被维护着。您可以在以下位置查看这两个工具之间的差异FSArchiver 维基页面


1这可能有点不准确,因为该软件没有维护并且网站将该文档页面列为“过时”

答案2

我认为您不能直接执行此操作,因为我知道没有“partimagefs”解决方案。你可以检查保险丝工具,但我认为有一个更简单的方法......

您可以使用虚拟磁盘(使用 KVM、qemu、VirtualBox)并让 partimage 在那里解压映像。如果您使用原始格式,则可以安全地安装它。

描述了必要的步骤这里

答案3

我手边没有 NTFS 卷,但这可能会帮助您转发:

mount -t ntfs -o loop,ro /path/to/winxp.img /mnt

/mnt未使用的挂载点在哪里。有许多发行版/mnt可供使用,但您可以在必要时轻松创建另一个发行版。ro表示“只读”,当您不希望更改图像时,这是一个很好的计划。

相关内容