我想将几张图片压缩成 .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 压缩,并使用了高压缩级别(-9
to xz
)和详细输出(v
to tar
、-v
to 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 文件。也就是说,第一种方法本质上是等效xz
的xz
tar
到tar cJf archive files...
,除了传递给的附加参数xz
。 - 第二步,第一个命令创建一个未压缩的 tar 存档,然后
xz
第二个命令对其进行压缩。(xz
完成后会自动删除原始文件,除非使用-k
/调用--keep
。)
如需进一步了解,请参阅拉斐尔范霍恩 (Rafael van Horn) 的这篇文章以及tar
和xz
手册页。
答案3
使用此命令:tar cJf <archive.tar.xz> <files>
。用空格分隔文件路径。