我需要将 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.001、test.zip.002、 等文件连接成一个更大的 test.zip 文件。一旦你有了那个文件,你就可以运行unzip test.zip
“如何在 Linux 中创建、拆分、加入和提取 zip 档案”可能会有所帮助。
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)
mis*_*ist 44
7z x archive.zip.001
Run Code Online (Sandbox Code Playgroud)
它会自动找到其余的
小智 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 重命名它们。
我认为值得一提的是,unar 命令行工具能够解压缩、解压缩、解压缩、解压缩等,包括拆分文件,只需:
unar first_file
Run Code Online (Sandbox Code Playgroud)
https://directory.fsf.org/wiki/Unar#Details