如何解压缩大文件
本文最后更新于 2025年3月27日 中午
如何解压大文件
1. 常见解压方式及优化
使用 7z 解压
1 | |
-mmt=48:使用 48 线程(根据 CPU 核心数调整)。-ooutput_dir:指定输出目录。
续解压(跳过已解压文件) 7z x file.zip -ooutput_dir -aos -mmt=48
使用 unzip
1 | |
-d output_dir:解压到指定目录。
继续上次的解压 1
unzip -n file.zip -d output_dir-d output_dir:解压到指定目录。 -
-n:避免覆盖已有文件,加快解压。 - #### 使用
tar(适用于 .tar.gz 或
.tar.bz2) 1
tar -xvf file.tar.gz -C output_dir-x:解压,-v:显示进度,-f:指定文件。
使用 pigz(多线程
gzip)
如果 .zip 里是 .gz 文件,换
pigz 可加速: 1
pigz -dc file.gz | tar xvf -
2. 检查解压进度
方法 1:使用 pv
监控进度
1 | |
方法 2:使用
iotop 或 dstat 监控 I/O
1 | |
3. 提高解压速度的方法
(1)增加解压并行度
7z默认支持多线程,使用-mmt=N来增加线程数。tar解压.tar.gz时可以用pigz提高速度。
(2)调整 I/O 优先级
1 | |
-c 2:后台模式,-n 0最高优先级。
(3)清理缓存,加速 I/O
1 | |
4. 如何断点续解
如果解压中断,可以使用: 1
7z x file.zip -ooutput_dir -aos-aos:跳过已解压的文件,避免重复解压。
或者使用 rsync 进行增量同步: 1
rsync -av --ignore-existing source/ destination/
5. 如何检查解压是否正确
使用 diff
或 md5sum 对比原始文件
1 | |
使用 7z
校验完整性
1 | |
t选项可检测.zip文件是否损坏。
6. 解决卡顿问题
如果 iotop 显示磁盘写入很低,可能是 I/O
调度问题: 1
sudo renice -n -5 -p $(pgrep unzip)unzip
进程的优先级。
如果 CPU 占用高,可能是
单线程瓶颈,可以尝试: 1
unzip -n file.zip -d output_dir && 让解压在后台运行,减少主线程负担。
结论
- 使用
7z和unzip -n避免重复解压。 - 使用
-mmt=48增加线程数 提高速度。 - 监控 I/O (
iotop) 识别瓶颈。 - 使用
7z t或md5sum校验完整性。 - 断点续解:使用
7z -aos或rsync。
通过这些方法,可以更快、更安全地解压大文件。