前言
tar 命令本身支持直接使用 -J
参数来创建.tar.xz
类型的文件,但是它似乎并不支持多线程压缩,在压缩大量内容时特别慢。
解决方案
我们可以通过 tar + xz + 管道 的方式绕开这一限制。
tar -cvf - <压缩目标> | xz -T 0 -c > <压缩包名>.tar.xz
比如
tar -cvf - my_folder/ | xz -T 0 -c > my_folder.tar.xz
-T
后面跟上的参数是要使用的线程数量,0
代表尽可能多的使用 CPU 线程。
最近在备份PVE的数据,真是帮大忙了!
#!/bin/bash
file=$(basename $1)
tar -cvf - $1 | xz -T 0 -c > $file.tar.xz
点赞,不想额外生成个tar包,这个方式好用。
tar -I 'xz -T 0' -cvf
后面发现还有-I 这个参数
```
Compression options:
-a, --auto-compress use archive suffix to determine the compression
program
-I, --use-compress-program=PROG
filter through PROG (must accept -d)
```