运维过程中在从服务器获取获取时,经常会用 tar 命令进行打包压缩后再进行传输。tar 只做打包不压缩的性能没什么问题,但默认支持的压缩操作都是单线程的。如 gzip、bzip2、xz 等方式,都是单线程的,导致操作缓慢,在文件大时特别明显。
pigz 是一个支持多线程,充分支持多核压缩的工具,可以通过它来配合 tar 进行打包压缩,默认压缩格式为 gzip。
tar cf - <需要压缩的文件> | pigz [-p 要使用的处理器数量] > 目标文件名
或者
# 通过 -I 或者 --use-compress-program 指定压缩工具
# 这里可以写入压缩工具的完整路径
# 如果需要用于解压,那么指定的工具必须支持 -d 参数
tar -I pigz -cf <目标文件名> <需要压缩的文件>
# 解压
tar -I pigz -xf <压缩文件名> [-C <指定的解压缩位置>]
注意:
pigz 虽然提供了高效的压缩,但是占用了大量的 CPU。如果在服务器闲置的情况下,可以使用这种方式。如果为了不影响服务器的正常运行,还是使用单线程的方式慢慢做比较好。
(完)