Laz*_*zer 183 linux compression gzip tar
我在工作中经常使用 gzip 目录。我通常做的是
tar -zcvf file.tar.gz /path/to/directory
Run Code Online (Sandbox Code Playgroud)
有没有办法在这里指定压缩级别?即使压缩需要更多时间,我也想尽可能使用最佳压缩。
小智 179
GZIP=-9 tar cvzf file.tar.gz /path/to/directory
Run Code Online (Sandbox Code Playgroud)
假设您正在使用 bash。一般将GZIP环境变量设置为“-9”,正常运行tar即可。
另外 - 如果你真的想要最好的压缩,不要使用 gzip。使用 lzma 或 7z。
并且在使用 gzip 时(无论如何出于各种原因这是个好主意)考虑使用pigz
program 而不是gzip
.
小智 79
不使用 tar 的 gzip 标志,而是在 tar 过程之后手动 gzip 文件,然后您可以为 gzip 程序指定压缩级别:
tar -cvf files.tar /path/to/file0 /path/to/file1 ; gzip -9 files.tar
Run Code Online (Sandbox Code Playgroud)
或者你可以使用:
tar cvf - /path/to/file0 /path/to/file1 | gzip -9 - > files.tar.gz
Run Code Online (Sandbox Code Playgroud)
gzip 命令行中的 -9 告诉 gzip 使用最大可能的压缩级别(默认为 -6)。
编辑:基于@depesz 注释的固定管道命令行。
Dav*_*hop 72
tar 的现代版本支持 xz 存档格式(GNU tar,自2009年的 1.22起,Busybox自2010年的 1.17.0起)。
它基于lzma2,有点像gz的7-Zip版本。如果您满足需要 xz 支持的要求,这会提供更好的压缩。
tar -Jcvf file.tar.xz /path/to/directory
Run Code Online (Sandbox Code Playgroud)
我刚刚在这里发现(基本上是这个问题的重复,但在 Unix stackexchange 中)还有一个 XZ_OPT=-9 环境变量来控制 XZ 压缩级别,类似于另一篇文章中的 GZIP 压缩级别。
XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory
Run Code Online (Sandbox Code Playgroud)
car*_*ito 39
tar cv /path/to/directory | gzip --best > file.tar.gz
Run Code Online (Sandbox Code Playgroud)
这是 Matrix Mole 的第二个解决方案,但略有缩短:
调用 tar 时,选项f
声明输出是一个文件。将其设置为-
(stdout) 会使 tar 将其输出写入 stdout,这是没有f
和的默认行为-
。
正如gzip
手册页所述,如果没有指定文件,gzip 将从标准输入压缩。-
在gzip
通话中没有必要。
选项--best
(相当于-9
)设置最高压缩级别。
小智 19
还可以选择使用-I
. 这可以包括压缩级别选项。
tar -I 'gzip -9' -cvf file.tar.gz /path/to/directory
Run Code Online (Sandbox Code Playgroud)
请注意,该-I
选项是 的简写--use-compress-program=COMMAND
。如果您使用的不是GNUtar
而是BSD,tar
这一点很重要。后者使用-I
选项作为选项的简写--files-from filename
。
因此,要使您的命令“跨平台”,您可以编写:
tar --use-compress-program='gzip -9' -cvf file.tar.gz /path/to/directory
Run Code Online (Sandbox Code Playgroud)
rfa*_*fay 12
当然,macOS bsd 衍生的 tar 必须有所不同:
tar -czf file.tar.gz --options gzip:compression-level=9 /path/to/directory
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
221796 次 |
最近记录: |