如何将多个文件压缩成 .xz 档案?

如何将多个文件压缩成 .xz 档案?

我想将几张图片压缩成 .xz 格式的存档。我该怎么做?

答案1

tar与选项一起使用-J

tar -cvJf images.tar.xz /directory/containing/images/*

tar用于将多个文件合并为一个(存档),然后我们需要使用 XZ 压缩算法来压缩存档。

man tar

-c, --create
       create a new archive
-v, --verbose
       verbosely list files processed
-J, --xz

-f, --file ARCHIVE
       use archive file or device ARCHIVE

还要注意,images.tar.xz将在当前目录中创建,如果您想将其保存在其他地方,请使用/full/path/to/images.tar.xz

答案2

尽管​tar cJf archive files...Zacharee1 详细介绍来自 heemayl通常是你想要做的,另一种方法是将经过压缩的数据通过管道传输到xz命令:

tar c files... | xz > archive.tar.xz

由于 Ubuntutar支持J选项,当您希望将选项传递给时,这种替代方法特别有用xz

在此示例中,我对一些 TIFF 文件进行了 tar 和 xzip 压缩,并使用了高压缩级别(-9to xz)和详细输出(vto tar-vto xz):

ek@Io:~/Pictures$ tar vc *.tif{,f} | xz -9v > pics.tar.xz
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
  100 %       207.3 KiB / 290.0 KiB = 0.715

当然,这也可以分两个明确独立的步骤来完成:

ek@Io:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
ek@Io:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
  100 %       207.3 KiB / 290.0 KiB = 0.715

.tar.xz虽然这两种方式最终生成的文件应该是相同的(而且在我测试的时候确实是相同的),但是它们的操作方式实际上并不等同。

  • 首先,输出tar管道|)至输入.几乎立即接收数据,并且不会创建中间未压缩的 tar 文件。也就是说,第一种方法本质上是等效xzxztartar cJf archive files...,除了传递给的附加参数xz
  • 第二步,第一个命令创建一个未压缩的 tar 存档,然后xz第二个命令对其进行压缩。(xz完成后会自动删除原始文件,除非使用-k/调用--keep。)

如需进一步了解,请参阅拉斐尔范霍恩 (Rafael van Horn) 的这篇文章以及tarxz手册页。

答案3

使用此命令:tar cJf <archive.tar.xz> <files>。用空格分隔文件路径。

相关内容