我正在尝试创建一个。tar。Xz压缩档案在一个命令。具体的语法是什么?
我已经尝试了tar cf - file | xz file.tar。Xz,但这行不通。
我正在尝试创建一个。tar。Xz压缩档案在一个命令。具体的语法是什么?
我已经尝试了tar cf - file | xz file.tar。Xz,但这行不通。
对xz使用-J压缩选项。记得涂上焦油哦:)
tar cfJ <archive.tar.xz> <files>
编辑2015-08-10:
如果你用破折号传递参数给tar(例如:tar -cf而不是tar cf),那么-f选项必须放在最后,因为它指定了文件名(感谢@A-B-B指出这一点!)在这种情况下,命令看起来像:
tar -cJf <archive.tar.xz> <files>
试试这个:tar -cf file.tar file-to-compress;Xz -z file.tar
注意:
tar.gz和tar.gz。Xz是不一样的;Xz提供更好的压缩。 不要使用管道|,因为它会同时运行命令。使用;或&依次执行命令。
Switch -J只适用于较新的系统。通用命令是:
创建.tar。xz存档
tar cf - directory/ | xz -z - > directory.tar.xz
解释
tar cf - directory读取目录/并开始将其转换为tar格式。该操作的输出是在标准输出上生成的。 |管道标准输出到另一个程序的输入… ... 也就是xz -z -。XZ被配置为压缩(-z)来自标准输入(-)的存档。 您将输出从xz重定向到tar。xz文件。
如果你喜欢管道模式,这是最干净的解决方案:
tar c some-dir | xz > some-dir.tar.xz
没有必要为了处理文件而使用f选项,然后使用-指定文件是标准输入。也没有必要为xz指定-z选项,因为它是默认的。
它也适用于gzip和bzip2:
tar c some-dir | gzip > some-dir.tar.gz
or
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。
快速解决方案
tarxz() { tar cf - "$1" | xz -4e > "$1".tar.xz ; }
tarxz name_of_directory
(注意,不是name_of_directory/)
使用xz压缩选项
如果你想对xz使用压缩选项,或者如果你在MacOS上使用tar,你可能想要避免tar -cJf语法。
根据xz的说法,这样做的方法是:
Tar cf - filename | xz -4e > filename. Tar .xz
因为我喜欢Wojciech Adam Koszek的格式,但不喜欢信息:
C为指定的文件创建一个新的存档。 F从目录中读取数据(最好把这个放在第二,因为-cf != -fc) -输出到标准输出 |将输出输送到下一个命令 Xz -4e使用-4e压缩选项调用Xz。(等于-4——极值) > filename.tar.xz将压缩后的文件指向filename.tar.xz
在-4e的位置,使用您自己的压缩选项。 我经常用-k来保留原始文件,用-9来进行重压缩。-z手动将xz设置为zip,如果没有其他指示,则默认为zip。
解压和解压缩
为了响应Rafael van Horn, uncompress & untar(见下面的注释):
xz -dc filename.tar.xz | tar x
注意:与Rafael的答案不同,用xz -dc代替catxz。文档建议这样做,以防你在脚本中使用它。最好养成使用-d或——decompress的习惯,而不是unxz。但是,如果必须的话,可以从命令行使用这些命令。
我总是记不起哪个存档开关做了什么,所以最近,我更喜欢更新的tar版本中的“自动压缩”特性(-a或——auto-compress)。命令看起来就像这样:
tar caf file.tar.xz file
使用这个-a选项,tar从用于存档的文件结尾自动推断出要使用的压缩!
tar -I 'xz -9 -T0' -cf <archive.tar.xz> <files>
在这种方法中,也可以将参数传递给xz。你可以随心所欲地改变论点。-9表示压缩级别,-T0表示使用多个线程。
它还可以与其他压缩工具一起工作,例如zstd
tar -I 'zstd -18 -T0' -cf <archive.tar.ztd> <files>
该命令只对gnu-tar生效。这是大多数Linux发行版所附带的。在Mac中,您可以安装gtar https://formulae.brew.sh/formula/gnu-tar