如何使用 TAR 使用最大压缩来 XZ 目录?

如何使用 TAR 使用最大压缩来 XZ 目录?

所以我需要使用最大压缩来压缩目录。

我怎样才能做到这一点xz?我的意思是我也需要tar,因为我无法仅使用xz.是否有一个 oneliner 可以生产,例如foo.tar.xz

答案1

tar使用最新的bash 或派生 shell 上的GNU :

XZ_OPT=-9 tar cJf tarfile.tar.xz directory

tar 的小写 j 开关使用 bzip,大写 J 开关使用 xz。

环境XZ_OPT变量允许您设置xz无法通过调用应用程序(例如tar.

这是现在最大

请参阅man xz您可以设置的其他选项(-e/--extreme 可能为某些数据集提供一些额外的压缩优势)。

XZ_OPT=-e9 tar cJf tarfile.tar.xz directory

答案2

假设xz遵循标准的命令行标志集 - 包括压缩级别标志,您可以尝试:

tar -cf - foo/ | xz -9 -c - > foo.tar.xz 

答案3

XZ_OPT=-9e tar cJf tarfile.tar.xz directory

甚至比

XZ_OPT=-9 tar cJf tarfile.tar.xz directory

选项 -e,“--extreme 修改压缩预设 (-0 ... -9)”,以便在不增加压缩器或解压缩器的内存使用量的情况下获得更好的压缩比(例外:压缩器内存使用量可能会增加)使用预设 -0 ... -2) 增加一点。缺点是压缩时间会急剧增加(很容易加倍)。

答案4

tar --help-I, --use-compress-program=PROG

tar -I 'xz -9' -cvf foo.tar.xz foo/  
tar -I 'gzip -9' -cvf foo.tar.gz foo/    

还可以使用外部压缩机进行压缩:

tar -I 'lz4 -9' -cvf foo.tar.lz4 foo/
tar -I 'zstd -19' -cvf foo.tar.zst foo/

解压缩外部压缩机:

tar -I lz4 -xvf foo.tar.lz4  
tar -I zstd -xvf foo.tar.zst  

列出存档外部压缩机:

tar -I lz4 -tvf foo.tar.lz4
tar -I zstd -tvf foo.tar.zst

相关内容