从我手头没有的旧磁盘中,我使用 .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
到一个“虚拟”文件,该文件将假装是一个真实的分区。
首先,您需要创建一个空文件至少 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
- 这就是环回设备构造派上用场(继续阅读)。创建一个环回设备附加到您新创建的虚拟磁盘(这在大多数系统上需要 root 权限,因此
sudo
使用):sudo losetup -f --show dummy_disk.raw
该命令将输出类似的内容
/dev/loop0
- 这是您需要提供的环回设备名称,partimage
而不是真正的分区。您还可以通过运行来检查环回设备是否已附加到您的文件losetup -a
- 这当然是可选的。跑向
partimage
恢复将存档文件系统复制到虚拟文件(替换/dev/loop0
为您在上一步中获得的名称):partimage restore /dev/loop0 winxp.img
一旦成功完成,您的
dummy_disk.raw
文件将包含恢复的 NTFS 文件系统!您现在只需安装它即可访问文件:山假人。为此,您只需要一个空目录。您可以使用
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
表示“只读”,当您不希望更改图像时,这是一个很好的计划。