CentOS 解压提速实用指南
一 快速判断瓶颈
iostat -mx 1、iotop -o。若是网络挂载(如 NFS/SMB),先复制到本地盘再解压。若是单线程算法(如 gzip/xz)在多核机器上,CPU 往往未被吃满。二 按压缩格式的高效解压命令
-C <目标目录>。| 归档格式 | 推荐解压命令 | 关键参数说明 |
|---|---|---|
| .tar.gz / .tgz | tar -xzf archive.tar.gz -C <dst> |
若打包时用 pigz 并行压缩,解压仍用单线程 gzip;追求速度可优先改用 .tar.zst。 |
| .tar.bz2 | tar -xjf archive.tar.bz2 -C <dst> |
单线程;可考虑改用 pbzip2 重打包后再解压(见下文)。 |
| .tar.xz | tar -xJf archive.tar.xz -C <dst> |
单线程且重;若可控,改用 zstd 或降低压缩等级。 |
| .tar.zst | tar -I 'zstd -T0' -xf archive.tar.zst -C <dst> |
zstd 多核解压,速度通常显著快于 gzip/xz。 |
| .zip | unzip -q archive.zip -d <dst> |
单线程;可并行解压多个 zip(见下文)。 |
三 并行与 I/O 优化
find . -name "*.zip" -print0 | xargs -0 -n 1 -P 4 unzip -q -d {}(示例 -P 4 为并发数)。tar -t 列出清单,按子目录分批解压。iostat -mx 1、iotop -o,确认是否磁盘成为瓶颈。tar -xvf 与 tar -xf 在大量小文件场景下实测差距很小(示例:35 分钟 vs 30 分钟),如需进度可保留 -v,不必为性能牺牲可读性。四 重建归档以换取后续更快解压
tar -cpf - <src> | pigz -1 -p $(nproc) > data_fast.tar.gztar -cpf - <src> | xz -T0 -9 > data_compress.xztar -cpf - <src> | zstd -T0 -6 > data.tar.zst)