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

Alo*_*dal 5 partition mount ntfs partimage

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

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

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

roz*_*acz 5

partimage 文档1 中所述

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

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

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

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

    dd if=/dev/zero of=dummy_disk.raw bs=1M count=4711
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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

    sudo losetup -f --show dummy_disk.raw
    
    Run Code Online (Sandbox Code Playgroud)

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

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

    partimage restore /dev/loop0 winxp.img
    
    Run Code Online (Sandbox Code Playgroud)

    成功完成后,您的dummy_disk.raw文件将包含恢复的 NTFS 文件系统!您现在只需要挂载它,即可访问文件:

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

    sudo mount -t ntfs-3g /dev/loop0 mountpoint
    
    Run Code Online (Sandbox Code Playgroud)

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

    或者

    sudo mount -o loop -t ntfs-3g dummy_disk.raw mountpoint
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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


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


uno*_*ode 0

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

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

这里描述了必要的步骤