7z 命令无法从 dmg 文件中提取单个分区

7z 命令无法从 dmg 文件中提取单个分区

我有一个名为的文件BaseSystem.dmg,其中包含 hfs+ 系统映像以及其他文件。

flex@flex-ubuntu:~/Documents/MacOS2$ dmg2img -l BaseSystem.dmg

dmg2img v1.6.7 (c) vu1tur ([email protected])

BaseSystem.dmg --> (partition list)

partition 0: Protective Master Boot Record (MBR : 0)
partition 1: GPT Header (Primary GPT Header : 1)
partition 2: GPT Partition Data (Primary GPT Table : 2)
partition 3:  (Apple_Free : 3)
partition 4: disk image (Apple_HFS : 4)
partition 5:  (Apple_Free : 5)
partition 6: GPT Partition Data (Backup GPT Table : 6)
partition 7: GPT Header (Backup GPT Header : 7)

7z我正在尝试从包中提取 hfs+ 系统映像文件p7zip-full。我在 Windows 10 和 Ubuntu 中都尝试过。

我已经尝试了所有这些命令以及其他命令......

7z x BaseSystem.dmg
7z e BaseSystem.dmg
7z x BaseSystem.dmg 4.hfs

我要么只提取 4.hfs 文件而什么也得不到,要么 7z 直接提取 BaseSystem.dmg 中的所有文件和文件夹。

7-Zip 19.00 (32 bit or 64 bit) on Windows当我使用和使用时,我得到相同的结果16.02 (64 bit) on Ubuntu

我知道这是可能的,因为启动磁盘实用程序使用7-Zip 19.00 (32 bit)并能够从 BaseSystem.dmg 中提取 4.hfs。但是我不知道它使用了什么参数。

我实际上还为我的 Windows 操作系统单独下载了 7-Zip 19.00 (32),当我自己运行它时,它不仅提取 4.hfs 文件。相反,它提取所有文件和文件夹。

因此,我使用的 7z 参数一定与“启动磁盘实用程序”程序使用的参数不同?

我可以dmg2img像这样使用,而且它有效......

dmg2img -p 4 -i BaseSystem.dmg -o 4.hfs

但我的问题是如何使用7z command从 BaseSystem.dmg 中提取 4.hfs 文件?我希望能看到 Boot Disk 程序使用了哪些参数?但它运行时只会打开一个命令窗口。以下是我得到的前几行。

7-Zip 19.00 (x86) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Scanning the drive for archives:
1 file, 498625205 bytes (476 MiB)

Extracting archive: C:\Users\flex\Downloads\BaseSystem.dmg
--
Path = C:\Users\flex\Downloads\BaseSystem.dmg
Type = Dmg
Physical Size = 498625205
Method = Copy Zero2 ZLIB CRC
Blocks = 594


Would you like to replace the existing file:
  Path:     C:\Users\flex\Downloads\4.hfs
  Size:     2004299776 bytes (1912 MiB)
  Modified: 2021-05-23 20:13:50
with the file from archive:
  Path:     4.hfs
  Size:     2004299776 bytes (1912 MiB)
? (Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename all / (Q)uit?

在上面的例子中,该4.hfs文件已在 Boot Utility 程序的先前运行中创建,但我只是想表明它确实尝试提取该4.hfs文件。它不会直接提取 BaseSystem.dmg 中的所有文件和文件夹。因此这应该可以用 7z 来做吗?

答案1

我通过询问找到了答案SourceForge 的 7-Zip 作者

尽管互联网上很多地方都解释如何使用这个命令:

7z e BaseSystem.dmg

从 BaseSystem.dmg 中提取分区,根据我的经验,该命令不仅提取分区文件,还提取所有内容,包括文件和文件夹。

就我而言,这是我需要提取的命令只是4.hfs分区:

7z e -t* BaseSystem.dmg 4.hfs

此命令列出 BaseSystem.dmg 中一层深的文件

7z l -t* BaseSystem.dmg

相关内容