【发布时间】:2013-09-22 05:54:03
【问题描述】:
我正在尝试在一个命令中创建一个.tar.xz 压缩存档。它的具体语法是什么?
我尝试过tar cf - file | xz file.tar.xz,但不起作用。
【问题讨论】:
标签: compression archive tar xz
我正在尝试在一个命令中创建一个.tar.xz 压缩存档。它的具体语法是什么?
我尝试过tar cf - file | xz file.tar.xz,但不起作用。
【问题讨论】:
标签: compression archive tar xz
【讨论】:
v 添加到命令开关 (tar -cJvf) 以使其详细显示正在添加到存档的文件。
f放在最后,即使没有破折号。
tar 在 macOS 上似乎支持 -J 但手册页中没有给出该功能。不得不在这里查一下。尽管他们在--options 的部分中确实提到了 XZ...
试试这个:tar -cf file.tar file-to-compress ; xz -z file.tar
注意:
|,因为它会同时运行命令。使用; 或& 会一个接一个地执行命令。【讨论】:
J 选项,但这有效。我认为您需要 RHEL6。
tar -c file-to-compress | xz -z > 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 文件。
【讨论】:
-f 在传递给xz 时并不表示“来自文件”。相反,它是--force 的缩写(详见xz(1)),除非需要,否则最好不要使用。
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 选项,然后使用- 来指定文件是标准输入。也不必为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 将 tar 和压缩文件定向到 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 或--decompress 而不是unxz 的习惯。但是,如果必须,可以从命令行使用这些命令。
【讨论】:
tar -cJf 语法的任何特殊原因?只是好奇,因为我刚才正在这样做,而且似乎奏效了。
我不记得哪个存档开关做了什么,所以这些天,我更喜欢较新的 tar 版本(-a 或 --auto-compress)中的“自动压缩”功能。然后命令看起来像这样:
tar caf file.tar.xz file
使用 -a 选项,tar 会从用于存档的文件结尾推断自动使用的压缩!
【讨论】: