Answers:
将-J压缩选项用于xz。并记住要man tar:)
tar cfJ <archive.tar.xz> <files>
编辑2015-08-10:
如果您要tar 使用破折号将参数传递给(例如:tar -cf,而不是tar cf),则该-f选项必须位于最后,因为它指定了文件名(感谢@ABB指出了这一点!)。在这种情况下,命令如下所示:
tar -cJf <archive.tar.xz> <files>
f,即使没有破折号也要放在最后。
tar在macOS上似乎支持,-J但手册页中未提供该功能。不得不在这里查找。尽管他们确实在--options... 的部分中提到了XZ
切换-J仅适用于较新的系统。通用命令是:
制作.tar.xz档案
tar cf - directory/ | xz -z - > directory.tar.xz
说明
tar cf - directory读取目录/并将其开始转换为TAR格式。此操作的输出在标准输出上生成。
| 将标准输出传递到另一个程序的输入...
...恰好是xz -z -。XZ配置为-z从标准输入(-)压缩()存档。
您将输出从重定向xz到tar.xz文件。
tar cf - directory/ | xz -z -T0 - > directory.tar.xz
-1 -T0或-0 -T0作为选项使用的大小,通常在可比或更快的时间内,与gzip相比,文件大小仍然较小,而默认设置则要-6慢得多比gzip
如果您喜欢管道模式,这是最干净的解决方案:
tar c some-dir | xz > some-dir.tar.xz
不必f为了处理文件而放置选项,然后-用于指定文件为标准输入。也不必指定的-z选项xz,因为它是默认选项。
它的工作原理与gzip和bzip2太:
tar c some-dir | gzip > some-dir.tar.gz
要么
tar c some-dir | bzip2 > some-dir.tar.bz2
解压缩也非常简单:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
如果只有tar存档,则可以使用cat:
cat archive.tar | tar x
如果只需要列出文件,请使用tar t。
如果要为使用压缩选项xz,或者tar在MacOS上使用压缩选项,则可能要避免使用tar -cJf语法。
根据man xz,执行此操作的方法是:
tar cf - baz | xz -4e > baz.tar.xz
因为我喜欢Wojciech Adam Koszek的格式,但不喜欢以下信息:
c 为指定的文件创建一个新的存档。 f从目录中读取(最好放第二个,因为-cf!= -fc)- 输出到标准输出| 管道输出到下一个命令xz -4exz使用-4e压缩选项进行调用。(等于-4 --extreme)> baz.tar.xz 将压缩的文件定向到 baz.tar.xz 在哪里-4e,使用您自己的压缩选项。我经常使用-k到--keep的原始文件,-9对于较重的压缩。-z手动设置xz为zip,但如果没有其他指示,则默认为zip。
回显Rafael van Horn,以解压缩和解压缩(请参见下面的注释):
xz -dc baz.tar.xz | tar x
注意:与Rafael的答案不同,请使用xz -dc代替catxz。如果您使用此脚本进行脚本编写,则文档会建议这样做。最好养成使用-d或--decompress代替的习惯unxz。但是,如果必须的话,可以从命令行使用这些命令。
tar -cJf在MacOS上不使用语法的任何特殊原因?很好奇,因为我刚才正在这样做,而且似乎正在工作。
试试这个: tar -cf file.tar file-to-compress ; xz -z file.tar
注意:
| 因为这会同时运行命令。一个接一个地使用;或&执行命令。J选项,但这可行。我认为您需要RHEL6。
tar -c file-to-compress | xz -z > file.tar.xz。
&不会一个接一个地启动命令。相反,它将启动第一个作为后台进程。
v到命令开关(tar -cJvf)会很详细,显示了正在添加到存档中的文件。