压缩与解压
本文介绍在智川云实例中常用的压缩和解压操作。
格式选择建议
| 格式 | 压缩率 | 速度 | 推荐场景 |
|---|---|---|---|
.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.tarTAR.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.bz2ZIP 格式
压缩
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.zip7Z 格式
需要先安装工具:
bash
apt-get update && apt-get install -y p7zip-full压缩
bash
7z a archive.7z directory/解压
bash
7z x archive.7zRAR 格式
需要先安装工具:
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/磁盘空间不足
压缩/解压需要临时空间,确保有足够的磁盘空间。可以先清理不需要的文件,或使用数据盘操作。
