如何在 Linux 上解压缩多部分(跨区)ZIP?

Tim*_*Tim 109 zip archive

我需要将 400mb 的文件上传到我的网络服务器,但我的上传限制为 200mb。我的主持人建议我使用跨区存档,我从未在 Linux 上这样做过。

我在自己的文件夹中创建了一个测试,拉上了一个PDF到test.zip.001.002.003。我该如何解压它?我需要先加入他们吗?

请注意,使用 7z 和使用 ZIP 格式一样快乐。如果这对结果有任何影响。

fro*_*boo 123

您需要先加入他们。您可以使用常见的 linux 应用程序,cat如下例所示:

cat test.zip* > ~/test.zip
Run Code Online (Sandbox Code Playgroud)

这会将您的所有test.zip.001test.zip.002、 等文件连接成一个更大的 test.zip 文件。一旦你有了那个文件,你就可以运行unzip test.zip

“如何在 Linux 中创建、拆分、加入和提取 zip 档案”可能会有所帮助。

  • 如果存档包含目录结构,`7za x archive` 可能更好。 (2认同)

Gil*_*il' 53

Linuxunzip实用程序并不真正支持多部分 zip。从手册

尚不支持多部分存档,除非与 zip 结合使用。(所有部分必须按顺序连接在一起,然后zip -F (对于 zip 2.x)或zip -FF(对于 zip 3.x)必须在连接的存档上执行以“修复”它。此外,zip 3.0 及更高版本可以组合使用 将多部分(拆分)存档合并为一个组合的单文件存档zip -s- inarchive -O outarchive。有关详细信息,请参阅zip 3 手册页。)

所以你需要先连接碎片,然后修复结果。cat test.zip.*连接所有被调用的文件test.zip.*,其中通配符*代表任何字符序列;文件按字典顺序枚举,这与数字顺序相同,这要归功于前导零。>test.zip将输出定向到文件中test.zip

cat test.zip.* >test.zip
zip -FF test.zip --out test-full.zip
unzip test-full.zip
Run Code Online (Sandbox Code Playgroud)

如果您通过直接拆分 zip 文件来创建各个部分,而不是使用官方 Pkzip 实用程序创建多部分 zip,那么您需要做的就是加入各个部分。

cat test.zip.* >test.zip
unzip test.zip
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,如果我将 `zip` 指向第一个多部分文件,`FF` 方法就可以工作,不需要 `cat`。 (6认同)
  • 正如@JānisElmeris 已经提到的,在使用`zip -FF` 之前无需连接档案。 (3认同)

mis*_*ist 44

7z x archive.zip.001
Run Code Online (Sandbox Code Playgroud)

它会自动找到其余的

  • 这太奇怪了......要让它工作,你首先需要将所有 ZIP 文件(.zXX 和 .zip)重命名为 .zip.xxx(.zip 是最后一部分),然后你可以在第一个文件上使用 7z x ,它“提取”到一个连接的 zip,然后可以再次使用 unzip 而不是 7z 进行解压缩......我不完全确定文件是否已正确解压缩,但至少这次 unzip 不会抱怨 CRC 错误.. . ZIP 在 Linux 上是如此令人难以置信的损坏 - 如果可以,请避免使用。:( (3认同)

小智 27

我在这里找到了答案:https : //superuser.com/a/517758/10264

这个答案在概念上与Gilles 的相似,即首先使用 split 将拆分存档合并为普通存档,然后使用 unzip 解压缩它。

不同之处在于-FF,您没有使用对我不起作用的标志,而是告诉 zip 重新打包拆分文件而不拆分。这就是手册中-s 0标志的含义。

拆分存档也可以使用拆分大小为 0 转换为单文件存档: zip -s 0 test.zip -O single.zip

因此,首先,将拆分的存档合并为一个存档:

zip -s 0 split-foo.zip --out unsplit-foo.zip
Run Code Online (Sandbox Code Playgroud)

然后,使用 unzip 解压缩单个存档:

unzip unsplit-foo.zip
Run Code Online (Sandbox Code Playgroud)

此方法仅适用于.z01, .z02, ....zip文件结构。如果您的文件名是.zip.001, .zip.002...,您首先使用 (eg) rename zip.0 z test.zip*with rename 重命名它们。

  • 这是 zip 3.x 的正确答案 (3认同)

Gua*_*Som 8

我认为值得一提的是,unar 命令行工具能够解压缩、解压缩、解压缩、解压缩等,包括拆分文件,只需:

unar first_file
Run Code Online (Sandbox Code Playgroud)

https://directory.fsf.org/wiki/Unar#Details