我正在尝试.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 - directory
读取 directory/ 并开始将其转换为 TAR 格式。此操作的输出在标准输出上生成。
|
管道标准输出到另一个程序的输入......
...恰好是xz -z -
。XZ 配置为-z
从标准输入 ( -
) 压缩 ( ) 存档。
您将输出重定向xz
到tar.xz
文件。
如果您喜欢管道模式,这是最干净的解决方案:
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
.
tarxz() { tar cf - "$1" | xz -4e > "$1".tar.xz ; }
tarxz name_of_directory
(注意,不是name_of_directory/
)
如果您想对 使用压缩选项xz
,或者如果您tar
在 MacOS 上使用,您可能希望避免使用该tar -cJf
语法。
根据man xz
,这样做的方法是:
tar cf - filename | xz -4e > filename.tar.xz
因为我喜欢Wojciech Adam Koszek 的格式,但不喜欢信息:
c
为指定的文件创建一个新存档。f
从目录中读取(最好放在第二个,因为-cf
!= -fc
)-
输出到标准输出|
管道输出到下一个命令xz -4e
xz
使用-4e
压缩选项调用。(等于-4
--extreme
)> filename.tar.xz
将焦油和压缩文件定向到filename.tar.xz
在哪里-4e
,使用您自己的压缩选项。我经常使用-k
原始--keep
文件并-9
进行非常重的压缩。-z
手动设置xz
为压缩,但如果没有其他指示,它默认为压缩。
呼应Rafael van Horn,解压缩和解压缩(见下面的注释):
xz -dc filename.tar.xz | tar x
注意:与Rafael's answer不同,使用xz -dc
代替catxz
. 如果您将其用于脚本编写,文档建议这样做。最好有使用-d
or--decompress
代替的习惯unxz
。但是,如果必须,可以从命令行使用这些命令。
尝试这个: tar -cf file.tar file-to-compress ; xz -z file.tar
笔记:
|
,因为它会同时运行命令。一个接一个地使用;
或&
执行命令。我永远不记得哪个存档开关做了什么,所以这些天,我更喜欢较新的 tar 版本(-a
或--auto-compress
)中的“自动压缩”功能。然后该命令看起来像这样:
tar caf file.tar.xz file
使用该 -a 选项, tar 从用于存档的文件结尾推断出要自动使用的压缩!