Skip to content

压缩与解压

本文介绍在智川云实例中常用的压缩和解压操作。

格式选择建议

格式压缩率速度推荐场景
.tar无压缩最快图片/视频等已压缩数据
.tar.gz中等较快通用场景,兼容性好
.tar.bz2较高较慢需要更小体积时
.zip中等较快需要与 Windows 交互

建议

对于图片、视频等已压缩的文件,使用 .tar 打包即可,进一步压缩意义不大且浪费时间。

TAR 格式(推荐)

打包(不压缩)

bash
# 打包目录
tar -cf archive.tar directory/

# 打包多个文件/目录
tar -cf archive.tar file1.py file2.py data/

解包

bash
# 解包到当前目录
tar -xf archive.tar

# 解包到指定目录
tar -xf archive.tar -C /target/path/

# 查看包内容(不解包)
tar -tf archive.tar

TAR.GZ 格式

压缩

bash
# 压缩目录
tar -czf archive.tar.gz directory/

# 显示进度(需要 pv 工具)
tar -cf - directory/ | pv | gzip > archive.tar.gz

解压

bash
# 解压到当前目录
tar -xzf archive.tar.gz

# 解压到指定目录
tar -xzf archive.tar.gz -C /target/path/

TAR.BZ2 格式

压缩率更高,但速度较慢:

bash
# 压缩
tar -cjf archive.tar.bz2 directory/

# 解压
tar -xjf archive.tar.bz2

ZIP 格式

压缩

bash
# 压缩目录
zip -r archive.zip directory/

# 压缩多个文件
zip archive.zip file1.py file2.py

# 设置压缩级别(0-9,9最高)
zip -r -9 archive.zip directory/

解压

bash
# 解压到当前目录
unzip archive.zip

# 解压到指定目录
unzip archive.zip -d /target/path/

# 查看内容(不解压)
unzip -l archive.zip

# 解压时覆盖已有文件
unzip -o archive.zip

处理中文乱码

bash
unzip -O CP936 archive.zip

7Z 格式

需要先安装工具:

bash
apt-get update && apt-get install -y p7zip-full

压缩

bash
7z a archive.7z directory/

解压

bash
7z x archive.7z

RAR 格式

需要先安装工具:

bash
apt-get update && apt-get install -y unrar

解压

bash
# 解压到当前目录
unrar x archive.rar

# 解压到指定目录
unrar x archive.rar /target/path/

注意

RAR 是专有格式,Linux 下通常只能解压不能压缩。建议使用开放格式。

实用技巧

排除特定文件

bash
# 排除 .git 目录和 __pycache__
tar -czf archive.tar.gz --exclude='.git' --exclude='__pycache__' project/

分卷压缩

适合超大文件:

bash
# 分割成 1GB 的分卷
tar -czf - large_directory/ | split -b 1G - archive.tar.gz.

# 合并并解压
cat archive.tar.gz.* | tar -xzf -

查看压缩进度

bash
# 安装 pv
apt-get install -y pv

# 带进度显示的压缩
tar -cf - directory/ | pv -s $(du -sb directory/ | awk '{print $1}') | gzip > archive.tar.gz

测试压缩包完整性

bash
# tar.gz
gzip -t archive.tar.gz

# zip
unzip -t archive.zip

常见问题

解压后文件权限问题

bash
# 保留原始权限
tar -xpzf archive.tar.gz

# 或解压后修改权限
chmod -R 755 directory/

磁盘空间不足

压缩/解压需要临时空间,确保有足够的磁盘空间。可以先清理不需要的文件,或使用数据盘操作。

智算无疆 川流不息