前言
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