在 CentOS(或一般 Linux)下进行分卷(压缩/打包分卷,如 tar + split,或 zip -s 等)速度很慢,通常不是“分卷”本身的问题,而是整体 I/O、CPU 或参数配置导致的。下面按常见原因给你梳理:
分卷本质上还是 读原文件 + 写多个分卷文件。
常见慢点:
✅ 建议:
iostat -x 1
看 %util 是否接近 100%
优化:
如果你用的是:
tar czf - | split
或
zip -9 -s 1g
gzip -9 / zip -9 非常吃 CPU
✅ 检查 CPU:
top
看是不是 gzip / zip 占满单核
✅ 优化:
-1 或默认压缩pigz(多线程 gzip)tar cf - dir | pigz | split -b 1G - file.tar.gz.
split 只是按字节切文件,几乎不耗资源
如果你发现:
tar czf - | split
慢 → 慢在 tar czf
分卷慢 ≠ 切文件慢
而是 tar 遍历小文件慢
表现:
✅ 优化:
tar cf - dir | split
find | cpio例如:
split -b 10M
→ 生成成千上万个文件
→ 文件系统 metadata 开销大
✅ 建议:
某些目录(如 /var/www)开启 SELinux 时:
可临时验证:
setenforce 0
CentOS 7 的 split / tar 版本较老
在超大文件时效率一般
✅ 可选:
pv 观察瓶颈tar cf - dir | pv | split
tar czf test.tar.gz bigfile
| split 慢 → IO / 文件系统✅ 最快组合(大文件)
tar cf - dir | split -b 2G - out.tar.
✅ 要压缩且快
tar cf - dir | pigz | split -b 2G - out.tar.gz.
✅ 小文件多
tar cf - dir | split -b 2G
如果你愿意,可以告诉我:
我可以直接给你最优命令。