如partimage 文档1 中所述,
(...) 从图像中提取文件也是不可能的。
但不必绝望!凭借 Unix 哲学的力量(“一切都是文件”),您可以访问文件而无需为单独的分区分配磁盘空间。方法如下:
..0. 你说你用它创建的映像partimage被命名winxp.img,它保存了一个4.6 GiB NTFS 分区的备份。美好的。您的 Linux 系统上有超过 4.6 GiB 的可用空间吗?完美的!(否则,获得一些可用空间。)您可以将partimage存档的内容恢复到一个“虚拟”文件,该文件将伪装成一个真正的分区。
首先,您需要创建一个至少 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- 这就是环回设备构造派上用场(继续阅读)。
创建一个连接到新创建的虚拟磁盘的环回设备(这在大多数系统上需要 root 权限,因此sudo使用):
sudo losetup -f --show dummy_disk.raw
Run Code Online (Sandbox Code Playgroud)
该命令将输出类似的内容/dev/loop0- 这是您需要提供的环回设备名称partimage而不是实际分区。您还可以通过运行检查环回设备是否附加到您的文件losetup -a- 这当然是可选的。
运行partimage以将存档文件系统恢复到虚拟文件(替换/dev/loop0为您在上一步中获得的名称):
partimage restore /dev/loop0 winxp.img
Run Code Online (Sandbox Code Playgroud)
成功完成后,您的dummy_disk.raw文件将包含恢复的 NTFS 文件系统!您现在只需要挂载它,即可访问文件:
安装假人。为此,您只需要一个空目录。您可以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这可能有点不准确,因为该软件未经维护,并且网站将该文档页面列为“过时”。
| 归档时间: |
|
| 查看次数: |
21963 次 |
| 最近记录: |