Per如何解压缩使用 .xz 的 tarball?,我尝试过tar xf php-5.6.0RC4.tar.xz
并且tar -xJf php-5.6.0RC4.tar.xz
在这两种情况下我都得到以下结果:
tar (child): xz: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)
我正在运行 Ubuntu 14.04 LTS。
怎么了?
在 xz、gzip 和 bzip2 之间,哪种压缩算法在压缩相当大的 tarball 时提供最小的文件大小和最快的速度?
我有数百个类似的大文件(每个 30 兆字节)要压缩。每对文件都有 99% 的相同数据(差异小于 1%),所以我希望存档不超过 40-50 兆字节。
单个文件可以从 30 MB 压缩到 13-15 MB(使用xz -1
, gz -1
, bzip2 -1
),但是在压缩两个或更多文件时,我希望存档的大小为13-15MB + N*0.3MB
N 是文件数。
当使用tar
(创建实体存档)和xz -6
(定义压缩字典大于一个文件 -更新 - 这还不够!)时,我仍然有大小为N*13MB
.
我认为无论是gzip
和bzip2
不会帮助我,因为他们有字典小于1 MB,和我的焦油物流有重复,每30 MB。
如何使用标准工具在现代 Linux 中归档我的问题?
是否可以调整xz
以快速压缩,但使用大于 30-60 MB 的字典?
更新:用tar c input_directory | xz --lzma2=dict=128M,mode=fast,mf=hc4 --memory=2G > compressed.tar.xz
. 不确定必要的mf=hc4
和--memory=2G
选项;但是dict=128M
将字典设置得足够大(大于一个文件),mode=fast
并使该过程比-e
.
我试图以良好的比率压缩 100GB,所以我决定使用 xz。我不需要它非常快,但由于我有一个 8 线程 CPU,我想知道如何利用它们。
我发现 xz 有一个并行实现:pixz。我也发现 xz 有一个多线程选项 -T。我正在试验他们两个,但我看不出他们的行为有什么不同。
它们之间有什么区别?为什么 xz 有 2 个并行实现?
编辑:我发现还有一个:pxz。
在我的旧 SUSE 发行版上,less
会自动解压缩 . .gz文件。
这在列出自动压缩/var/log/mail*.gz
文件时非常方便。
SUSE 的当前版本现在/var/log/mail
使用xz存档和其他版本。
我从没想过如何less
自动解压。gz文件,但我可能应该有 (:
所以:我需要做什么,所以这“神奇地”会起作用:
less /var/log/mail-20130201.xz
Run Code Online (Sandbox Code Playgroud)
我认为这是一个 Linux 问题,但如果它是特定于 SUSE 的,我正在运行这个版本的 SUSE:
openSUSE 12.2 (x86_64)
VERSION = 12.2
CODENAME = Mantis
Run Code Online (Sandbox Code Playgroud) 我有一些当前已被 gzip 压缩的大文件,我想对它们进行 xz。我想设置一个脚本来执行此操作,但我要小心不要丢失数据,即我永远不应该删除 gzipped 版本,除非 xz 版本确实创建正确。由于这些是大文件,我也不想先将文件解压缩到磁盘。我在想一个管道set -o pipefail; gzip -dc file.gz | xz > file.xz && rm file.gz
可能接近我想要的。这样做的正确方法是什么?这是否保证可以捕获在删除最终文件之前发生的任何故障?