所以我需要使用最大压缩来压缩目录。
我怎样才能做到这一点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