使用 xz 而不是 gz - 非常慢

cla*_*rkk 7 linux zip gzip xz

如何将这些gzip方法更改为xz?

这似乎有效,但运行速度真的非常慢......(〜20-30x)

// gzip
... | gzip -c -1 > /path

// xz
... | xz -zf > /path
Run Code Online (Sandbox Code Playgroud)

还没有测试过,但这就是 xz 压缩的方法吗?

// gzip
tar -zcf /path /path

// xz
tar -Jcf /path /path
Run Code Online (Sandbox Code Playgroud)

Mar*_*ngs 5

我遇到了同样的问题,并对大型(~2GB)纯文本日志文件进行了一些测试。

事实证明xz -0,即使用级别 0 进行压缩速度更快,并且生成的文件要小得多

time gzip -vc -9 test.log.1 > logs/test.log.gz9
real    2m34.079s
user    1m54.365s
sys     0m4.385s


time xz -vc -0 test.log.1 > logs/test.log.xz0
  100 %      53.1 MiB / 1,273.3 MiB = 0.042    11 MiB/s       1:53
real    1m53.779s
user    1m25.295s
sys     0m4.270s

time xz -vc -6 test.log.1 > logs/test.log.xz6
test.log.1 (1/1)
  100 %      53.9 MiB / 1,273.3 MiB = 0.042   798 KiB/s      27:13
real    27m13.968s
user    26m57.925s
sys     0m5.800s

-rw-r--r--  1 root   root    95M Sep  9 15:30 test.log.gz9
-rw-r--r--  1 root   root    54M Sep  9 15:38 test.log.xz0
-rw-r--r--  1 root   root    54M Sep  9 16:11 test.log.xz6
Run Code Online (Sandbox Code Playgroud)

arm这些测试在装有 Ubuntu 14.4 的迷你计算机上运行

xz -0请注意,和xz -6(默认值)之间的结果文件大小几乎没有差异。

我什至会投票选择xz -0默认...


在普通机器上,xz -0速度有点,并且生成的文件要小得多(输入文件有 4.2GB):

time tar -I 'xz -0' -cvf out.txz test.log
real    1m46.718s
user    1m42.000s
sys     0m23.084s

time tar -zcvf out.tgz test.log
real    1m13.778s
user    1m9.800s
sys     0m11.544s

-rw-rw-r--  1 root root 231M Sep 13 09:23 out.tgz
-rw-rw-r--  1 root root 125M Sep 13 09:37 out.txz
-rw-rw-r--  1 root root 4.2G Sep 13 09:07 test.log
Run Code Online (Sandbox Code Playgroud)

这个答案

tar -I 'xz -0' -cvf out.txz test.log
Run Code Online (Sandbox Code Playgroud)

可能会加快您的归档速度,但肯定会为您提供更小的文件。


Mar*_*ler 2

天下没有免费的午餐。如果你想要更好的压缩,将需要更多的时间(和内存)。您可以尝试较低的压缩级别以获得更高的速度。默认值为xz -6,因此您可以尝试级别 0 到 5,看看在时间与压缩方面是否有一个让您满意的地方。(你不需要-zf。)