如何解压缩大文件

本文最后更新于 2025年3月27日 中午

如何解压大文件

1. 常见解压方式及优化

使用 7z 解压

1
7z x file.zip -ooutput_dir -mmt=48
  • -mmt=48:使用 48 线程(根据 CPU 核心数调整)。
  • -ooutput_dir:指定输出目录。

续解压(跳过已解压文件) 7z x file.zip -ooutput_dir -aos -mmt=48

使用 unzip

1
unzip file.zip -d output_dir
  • -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
pv file.zip | unzip -d output_dir

方法 2:使用 iotopdstat 监控 I/O

1
iotop  # 监控磁盘读写

3. 提高解压速度的方法

(1)增加解压并行度

  • 7z 默认支持多线程,使用 -mmt=N 来增加线程数。
  • tar 解压 .tar.gz 时可以用 pigz 提高速度。

(2)调整 I/O 优先级

1
ionice -c 2 -n 0 unzip file.zip -d output_dir
  • -c 2:后台模式,-n 0 最高优先级。

(3)清理缓存,加速 I/O

1
echo 3 | sudo tee /proc/sys/vm/drop_caches

4. 如何断点续解

如果解压中断,可以使用:

1
7z x file.zip -ooutput_dir -aos
- -aos:跳过已解压的文件,避免重复解压。

或者使用 rsync 进行增量同步:

1
rsync -av --ignore-existing source/ destination/

5. 如何检查解压是否正确

使用 diffmd5sum 对比原始文件

1
2
3
diff -r output_dir original_files_dir
md5sum file.zip > checksum.txt
md5sum -c checksum.txt

使用 7z 校验完整性

1
7z t file.zip
  • t 选项可检测 .zip 文件是否损坏。

6. 解决卡顿问题

如果 iotop 显示磁盘写入很低,可能是 I/O 调度问题

1
sudo renice -n -5 -p $(pgrep unzip)
- 提高 unzip 进程的优先级。

如果 CPU 占用高,可能是 单线程瓶颈,可以尝试:

1
unzip -n file.zip -d output_dir &
- & 让解压在后台运行,减少主线程负担。


结论

  • 使用 7zunzip -n 避免重复解压。
  • 使用 -mmt=48 增加线程数 提高速度。
  • 监控 I/O (iotop) 识别瓶颈
  • 使用 7z tmd5sum 校验完整性
  • 断点续解:使用 7z -aosrsync

通过这些方法,可以更快、更安全地解压大文件。


如何解压缩大文件
http://example.com/2025/03/27/如何解压缩大文件/
作者
Artimis
发布于
2025年3月27日
许可协议