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

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

我一直试图将特定目录中的所有文件压缩成一个 zip 文件,然后将其传输到目标服务器。我使用的命令是

zip -j $Zipfilename *

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

zip warning: name not matched

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

答案1

众所周知,Zip 无法创建大于 2GB 的 ZIP 文件。不管怎样,Linux 还有其他工具,例如tar、和gzip其他bzip工具,它们对创建文件大小的限制要高得多。但是,如果您坚持使用 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。例如:

tar -xzf /tmp/some_file.tar.gz

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

使用 gzip 创建

gzip -c 文件 file2 文件3 > newfile.gz`

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

gzip -cr 目录/> newfile.gz`

从目录创建一个新的 gzip。

解压只是gunzipgzip文件进行简单的操作而已。

使用 bzip 创建

BZip 不执行目录遍历,因此它只适合压缩一个或多个文件。

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

其中 是 1 至 9 之间的数字,1 表示最低压缩级别,9 表示最高压缩级别。

答案2

unzip 版本 6.0 和 zip 版本 3.0 支持大于 2GB 的文件。

2009 年 4 月 20 日发布的 UnZip 6.0 的新功能:

  • 支持 PKWARE ZIP64 扩展,允许 Zip 档案和 Zip 档案条目大于 4 GiBytes 且单个 Zip 档案内有超过 65536 个条目。此支持目前仅适用于 Unix、OpenVMS 和 Win32/Win64。
  • 支持bzip2压缩方法。

2008 年 7 月 7 日发布的 Zip 3.0 中的新功能:

  • 大文件支持(即> 2GB)
  • 每个档案支持超过 65536 个文件
  • 多部分存档支持
  • bzip2 压缩支持

答案3

unix-way 用于tar将文件多路复用在一起,gzip/ bzip2/any-other-compressor 用于压缩.tar档案。

相关内容