我一直试图将特定目录中的所有文件压缩成一个 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.gz
tar(ball) 解压到我当前所在的目录中。
使用 gzip 创建
gzip -c 文件 file2 文件3 > newfile.gz`
从一个文件或一组文件创建一个新的 gzip 文件。
gzip -cr 目录/> newfile.gz`
从目录创建一个新的 gzip。
解压只是gunzip
对gzip
文件进行简单的操作而已。
使用 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
档案。