在 bash shell 中压缩大于 2GB 的文件

2 bash shell

我一直在尝试将特定目录中的所有文件压缩为一个 zip 文件,然后将其传输到目标服务器。我使用过的命令就像

zip -j $Zipfilename *
Run Code Online (Sandbox Code Playgroud)

问题是有时所有文件的总大小达到 > 2GB 所以我收到警告

zip warning: name not matched
Run Code Online (Sandbox Code Playgroud)

并且文件没有被压缩。有没有其他方法可以做到这一点,而不会出现上述错误?请帮帮我!!

qwe*_*eet 10

不知道 Zip 能够创建大于 2GB 的 ZIP。是好还是坏,Linux有其他工具,如targzipbzip和其他人,你可以用这对他们能创造什么更高的极限。但是,如果您坚持使用 ZIP,则可以尝试使用如下--split-size指令:

zip -j --split-size 2g $zipfilename *

如果您想知道替代方案...

使用 Tar 创建

tar -cf name_of_zip.tar directory/

这将创建一个简单的 Tar(ball) 文件。适合即时以及需要快速取出物品时使用。

tar -czf name_of_zip.tar.gz directory/

这将创建一个目录的 Tar-Gzipped 文件。tar-gz是一个被进一步压缩的 Tar(ball) gzip。它比标准的 Tar 操作稍慢,但为您得到的内容提供了相当好的压缩。

tar -cjf name_of_zip.tar.bz directory/

这将创建一个目录的 Tar-BZipped 文件。tar-bz是您可以使用的最慢的 tar 选项,但在 tar 之上提供最大的压缩量。

解压是用-c开关替换开关的简单问题-x。IE:

tar -xzf /tmp/some_file.tar.gz

它将/tmp/some_file.tar.gztar(ball)解压到我当前所在的任何目录中。

使用 gzip 创建

gzip -c file file2 file3 > newfile.gz`

从一个文件或一堆文件创建一个新的 gzip 文件。

gzip -cr 目录/ > newfile.gz`

从目录创建一个新的 gzip。

解压缩只是简单地gunzip在您的gzip文件上使用的问题。

使用 bzip 创建

BZip 不进行目录遍历,因此它仅适用于压缩一个或多个文件。

bzip2 -ck file -<number> > compress.bz

其中 是一个介于 1 和 9 之间的数字,1 是最低压缩级别,9 是最高压缩级别。