我正在尝试用一个命令创建一个.tar.xz
压缩档案。具体的语法是什么?
我已经尝试过tar cf - file | xz file.tar.xz
,但那样行不通。
我正在尝试用一个命令创建一个.tar.xz
压缩档案。具体的语法是什么?
我已经尝试过tar cf - file | xz file.tar.xz
,但那样行不通。
Switch -J
只在较新的系统上有效。通用命令是:
制作 .tar.xz 压缩包的命令如下:
tar cf - directory/ | xz -z - > directory.tar.xz
说明
tar cf - 目录
读取目录并将其放入TAR格式中。此操作的输出生成在标准输出上。
|
将标准输出导入到另一个程序的输入中...
...这个程序恰好是 xz -z -
。 XZ 配置为从标准输入(-
) 压缩 (-z
) 归档文件。
您将来自 xz
的输出重定向到 tar.xz
文件。
tar cf - directory/ | xz -z -T0 - > directory.tar.xz
- oidualc-1 -T0
或-0 -T0
作为选项,这通常仍会比gzip更快地提供可比较或更小的文件,而默认的-6
比gzip慢得多。 - fgwaller如果你喜欢管道模式,这是最干净的解决方案:
tar c some-dir | xz > some-dir.tar.xz
处理文件时不必加上f
选项,然后使用-
指定文件为标准输入。对于xz
,无需指定-z
选项,因为它是默认的。
它也适用于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
命令。tarxz() { tar cf - "$1" | xz -4e > "$1".tar.xz ; }
tarxz name_of_directory
注意,不是name_of_directory/
如果您想要使用 xz
的压缩选项,或者在MacOS上使用 tar
,您可能希望避免使用 tar -cJf
语法。
根据man xz
,实现这一点的方法是:
tar cf - filename | xz -4e > filename.tar.xz
因为我喜欢Wojciech Adam Koszek's format,但不需要信息:
c
创建一个新的归档文件。f
从目录中读取(最好放在第二个位置,因为 -cf
!= -fc
)-
输出到标准输出|
将输出管道传递给下一个命令xz -4e
使用 -4e
压缩选项调用 xz
。(等同于 -4
--extreme
)> filename.tar.xz
将打包和压缩后的文件传递给 filename.tar.xz
在-4e
处,使用您自己的压缩选项。
我经常使用 -k
保留原始文件和 -9
进行真正的高度压缩。-z
手动设置为 zip ,尽管如果没有另外指定,它默认为 zip。
如Rafael van Horn所述,要解压缩并解开 tar (请参见下面的说明):
xz -dc filename.tar.xz | tar x
注意:与Rafael的答案不同,使用xz -dc
而不是catxz
。文档建议在您将其用于脚本时使用此选项。最好养成使用-d
或--decompress
而不是unxz
的习惯。但是,如果必须使用,直接从命令行中使用这些命令也是可以的。
tar -cJf
语法的特别原因吗?只是好奇,因为我刚才正在使用它,似乎可以工作。 - Lo-Tan我总是记不住每个归档选项的用途,所以现在我更喜欢较新版本tar的"自动压缩"功能 (-a
或 --auto-compress
)。命令看起来像这样:
tar caf file.tar.xz file
有了“-a”选项,tar命令可以自动从归档文件的扩展名推断出要使用的压缩方式!
尝试这个命令:tar -cf file.tar file-to-compress ; xz -z file.tar
注意:
|
,因为它会同时运行两个命令。使用分号 ;
或者 & 符号可以让命令一个接一个地执行。J
选项,但这个方法有效。我认为你需要RHEL6。 - Engineer2021tar -c file-to-compress | xz -z > file.tar.xz
。 - Jack Q&
不会一个接一个地启动命令。相反,它将把第一个作为后台进程启动。 - Luis Lavaire.&&
,它按顺序运行命令。如果任何一个单独的命令返回错误代码,它也会停止执行。 - Phillip Schmidttar -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
v
(如tar -cJvf
)可以显示添加到归档文件中的文件,以便进行详细说明。 - Stuart Cardallf
放在最后。 - mwfearnleytar
命令似乎支持-J
参数,但这一特性在手册页面上没有说明。我不得不在这里查找相关信息。尽管在--options
部分中提到了 XZ,但未对-J
参数作出解释。 - cbarrick