Linux 文件压缩与解压 rar gz 和 zip 格式详解 📦
全面掌握主流压缩格式:从基础命令到高级技巧,一文搞定所有压缩解压需求
📋 目录
一、格式速览 🗂️
格式 |
特点 |
适用场景 |
压缩率 |
速度 |
RAR |
高压缩率、分卷、加密、恢复记录 |
大文件备份、重要数据归档 |
⭐⭐⭐⭐ |
⭐⭐ |
GZ |
Linux 原生、流式压缩、配合tar使用 |
日志压缩、源码分发 |
⭐⭐⭐ |
⭐⭐⭐⭐ |
ZIP |
跨平台、系统兼容、广泛支持 |
日常文件分享、邮件附件 |
⭐⭐ |
⭐⭐⭐ |
7Z |
极高压缩率、多种算法支持 |
极限压缩需求 |
⭐⭐⭐⭐⭐ |
⭐⭐ |
XZ |
极高压缩率、Linux内核使用 |
系统分发、软件包 |
⭐⭐⭐⭐⭐ |
⭐ |
BZ2 |
较好压缩率、CPU友好 |
中等压缩需求 |
⭐⭐⭐ |
⭐⭐⭐ |
二、安装指南 🛠️
各发行版安装命令
发行版 |
RAR/UNRAR |
ZIP/UNZIP |
7Z |
其他工具 |
Ubuntu/Debian |
sudo apt install rar unrar |
预装 |
sudo apt install p7zip-full |
sudo apt install xz-utils bzip2 |
CentOS/RHEL |
sudo yum install epel-release && sudo yum install rar unrar |
预装 |
sudo yum install p7zip p7zip-plugins |
sudo yum install xz bzip2 |
Arch/Manjaro |
sudo pacman -S rar unrar |
预装 |
sudo pacman -S p7zip |
sudo pacman -S xz bzip2 |
Fedora |
sudo dnf install rar unrar |
预装 |
sudo dnf install p7zip p7zip-plugins |
sudo dnf install xz bzip2 |
验证安装
1 2 3 4 5
| rar --version || echo "RAR not installed" unrar --version || echo "UNRAR not installed" 7z --help || echo "7-Zip not installed" xz --version || echo "XZ not installed"
|
三、RAR 命令大全 🐘
基本压缩命令
1 2 3 4 5 6 7
| rar a archive.rar file.txt rar a archive.rar directory/ rar a -r archive.rar directory/
rar a archive.rar file1.txt file2.txt
|
高级压缩选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| rar a -p archive.rar file.txt rar a -p- archive.rar file.txt
rar a -v100m archive.rar bigfile.iso rar a -v1g archive.rar bigfile.iso
rar a -m0 archive.rar file.txt rar a -m1 archive.rar file.txt rar a -m5 archive.rar file.txt rar a -m5 -md512m archive.rar large_dir
rar a -rr3% archive.rar important_data/ rar a -rv5% archive.rar critical_data/
rar a -x*.tmp archive.rar directory/ rar a -x*.log -x*.tmp archive.rar dir/
|
解压命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| unrar e archive.rar unrar x archive.rar
unrar x archive.rar /target/path/
unrar x -p password archive.rar
unrar e archive.rar specific_file.txt
unrar t archive.rar
|
查看和管理
1 2 3 4 5 6 7 8
| unrar l archive.rar unrar v archive.rar rar l archive.rar
rar c archive.rar rar cf archive.rar comment.txt
|
四、GZ/TAR 命令大全 🗜️
GZIP 单独使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| gzip file.txt gzip -k file.txt
gzip -1 file.txt gzip -9 file.txt gzip -6 file.txt
gunzip file.txt.gz gzip -d file.txt.gz
zcat file.txt.gz zless file.txt.gz zgrep "pattern" file.txt.gz
|
TAR 归档 + 压缩
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| tar -cvf archive.tar directory/ tar -cvf archive.tar file1 file2 tar -xvf archive.tar
tar -czvf archive.tar.gz directory/ tar -czvf archive.tgz directory/ tar -xzvf archive.tar.gz
tar -cJvf archive.tar.xz directory/ tar -cjvf archive.tar.bz2 directory/ tar -cZvf archive.tar.Z directory/ tar -xJvf archive.tar.xz tar -xjvf archive.tar.bz2
tar -xzvf archive.tar.gz tar -xvf archive.tar tar -xJvf archive.tar.xz tar -xjvf archive.tar.bz2
tar -xzvf archive.tar.gz -C /target/path/
tar -tzvf archive.tar.gz tar -tvf archive.tar
tar -rvf archive.tar newfile.txt
tar -czvf archive.tar.gz --exclude='*.tmp' directory/ tar -czvf archive.tar.gz --exclude='node_modules' --exclude='.git' project/
|
五、ZIP 命令大全 📂
压缩命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| zip archive.zip file.txt zip -r archive.zip directory/
zip -e archive.zip file.txt zip -e -P password archive.zip file.txt
zip -0 archive.zip file.txt zip -1 archive.zip file.txt zip -9 archive.zip file.txt
zip -s 100m -r split.zip large_dir/
zip -r archive.zip dir/ -x "*.tmp" zip -r archive.zip dir/ -x "*.log" "*.tmp"
zip -z archive.zip
|
解压命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| unzip archive.zip unzip archive.zip -d /target/path/
unzip -P password archive.zip
unzip archive.zip specific_file.txt unzip archive.zip "*.txt"
unzip -l archive.zip unzip -v archive.zip unzip -Z archive.zip
unzip -t archive.zip
|
高级功能
1 2 3 4 5 6 7 8
| zip -u archive.zip newfile.txt
zip -d archive.zip file_to_remove.txt
zip -F broken.zip --out fixed.zip
|
六、其他格式 🔄
7Z 格式(高压缩率)
1 2 3 4 5 6 7 8 9 10 11 12 13
| sudo apt install p7zip-full
7z a archive.7z directory/ 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir/
7z x archive.7z 7z x archive.7z -o/target/path/
7z l archive.7z
|
XZ 格式(极高压缩率)
1 2 3 4 5 6 7 8 9 10 11
| xz file.txt xz -zk file.txt xz -9e file.txt
unxz file.txt.xz xz -d file.txt.xz
xzcat file.txt.xz
|
BZIP2 格式
1 2 3 4 5 6 7 8 9 10
| bzip2 file.txt bzip2 -k file.txt
bunzip2 file.txt.bz2 bzip2 -d file.txt.bz2
bzcat file.txt.bz2
|
七、实用脚本 🚀
1. 智能备份脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #!/bin/bash
BACKUP_DIR="${1:-.}" BACKUP_NAME="backup-$(date +%Y%m%d_%H%M%S)" COMPRESSION_TYPE="${2:-gz}"
echo "开始备份: $BACKUP_DIR"
case $COMPRESSION_TYPE in "gz") tar -czvf "${BACKUP_NAME}.tar.gz" --exclude='*.tmp' --exclude='*.log' "$BACKUP_DIR" ;; "bz2") tar -cjvf "${BACKUP_NAME}.tar.bz2" --exclude='*.tmp' --exclude='*.log' "$BACKUP_DIR" ;; "xz") tar -cJvf "${BACKUP_NAME}.tar.xz" --exclude='*.tmp' --exclude='*.log' "$BACKUP_DIR" ;; "rar") rar a -r -rr3% -m5 "${BACKUP_NAME}.rar" "$BACKUP_DIR" ;; "zip") zip -r -9 "${BACKUP_NAME}.zip" "$BACKUP_DIR" -x "*.tmp" "*.log" ;; *) echo "不支持的压缩类型: $COMPRESSION_TYPE" echo "可用类型: gz, bz2, xz, rar, zip" exit 1 ;; esac
echo "备份完成: ${BACKUP_NAME}.${COMPRESSION_TYPE}"
|
2. 批量解压脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #!/bin/bash
for archive in *.zip *.rar *.tar.* *.7z; do if [ -f "$archive" ]; then echo "正在解压: $archive" case "$archive" in *.zip) unzip -q "$archive" ;; *.rar) unrar x -y "$archive" ;; *.tar.gz|*.tgz) tar -xzf "$archive" ;; *.tar.bz2) tar -xjf "$archive" ;; *.tar.xz) tar -xJf "$archive" ;; *.7z) 7z x "$archive" ;; *) echo "不支持的格式: $archive" continue ;; esac echo "完成: $archive" fi done
|
3. 目录大小监控与压缩
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #!/bin/bash
TARGET_DIR="/path/to/monitor" SIZE_THRESHOLD="100M"
find "$TARGET_DIR" -type d -exec du -sh {} + | while read size dir; do if [ "$(echo "$size" | grep -Eo '^[0-9.]+')" != "" ] && [ "$(echo "$size" | grep -Eo '^[0-9.]+[MG]')" != "" ]; then size_num=$(echo "$size" | sed 's/[MG]//') size_unit=$(echo "$size" | sed 's/[0-9.]//g') if [ "$size_unit" = "M" ] && [ $(echo "$size_num > 100" | bc) -eq 1 ]; then echo "压缩大目录: $dir ($size)" tar -czf "${dir}.tar.gz" "$dir" && rm -rf "$dir" fi fi done
|
八、性能对比 📊
压缩率对比(测试数据:Linux内核源码)
格式 |
压缩后大小 |
压缩率 |
压缩时间 |
解压时间 |
原始 |
1024MB |
- |
- |
- |
ZIP |
410MB |
59.9% |
45s |
15s |
GZ |
380MB |
62.9% |
35s |
12s |
BZ2 |
320MB |
68.8% |
120s |
25s |
RAR |
300MB |
70.7% |
90s |
18s |
7Z |
280MB |
72.7% |
180s |
20s |
XZ |
260MB |
74.6% |
240s |
22s |
推荐使用场景
- 日常使用: ZIP(兼容性好)
- Linux系统: GZ/TAR(原生支持)
- 备份归档: RAR(功能丰富)
- 极限压缩: 7Z/XZ(最高压缩率)
- 日志处理: GZ(流式压缩)
九、高级技巧 💡
1. 并行压缩(使用pigz)
1 2 3 4 5 6 7 8
| sudo apt install pigz
tar -cf - directory/ | pigz -9 > archive.tar.gz
tar -cf - directory/ | pbzip2 -9 > archive.tar.bz2
|
2. 加密最佳实践
1 2 3 4 5 6 7 8
| read -s -p "输入密码: " password echo rar a -p"$password" archive.rar file.txt
password=$(openssl rand -base64 32) rar a -p"$password" archive.rar file.txt
|
3. 自动排除常见文件
1 2 3 4 5 6 7 8 9 10 11 12 13
| cat > exclude.list << EOF *.tmp *.log *.cache node_modules/ .git/ .DS_Store EOF
tar -czvf archive.tar.gz -X exclude.list directory/ zip -r archive.zip directory/ -x@exclude.list
|
4. 网络传输优化
1 2 3 4 5
| tar -czf - large_dir/ | ssh user@remote "cat > /backup/backup.tar.gz"
ssh user@remote "cat /backup/backup.tar.gz" | tar -xzf -
|
十、速查表 🧩
常用命令速查
需求 |
命令 |
压缩目录 |
tar -czvf archive.tar.gz dir/ |
解压 tar.gz |
tar -xzvf archive.tar.gz |
加密 ZIP |
zip -e archive.zip file |
分卷 RAR |
rar a -v100m archive.rar file |
查看压缩内容 |
unzip -l a.zip / unrar l a.rar / tar -tzvf a.tar.gz |
最高压缩率 |
7z a -mx=9 archive.7z dir/ |
并行压缩 |
`tar -cf - dir/ \ |
pigz > archive.tar.gz` |
按格式选择
- 最快压缩:
zip -1
或 gzip -1
- 平衡选择:
rar -m5
或 gzip -6
- 最佳压缩:
7z -mx=9
或 xz -9e
- 日常使用:
zip
或 tar.gz
- 重要备份:
rar
(带恢复记录)
- 极限压缩:
7z
或 xz
故障排除
1 2 3 4 5 6 7 8 9 10
| zip -F broken.zip --out fixed.zip
unzip -t archive.zip rar t archive.rar tar -tf archive.tar.gz >/dev/null && echo "OK"
unzip -O GBK archive.zip
|
🎯 总结:
日常使用选 ZIP,Linux 系统用 TAR+GZ,重要备份用 RAR,极限压缩试 7Z/XZ
根据需求选择合适的工具,记得经常测试备份的完整性!
💡 提示: 在生产环境中操作前,务必测试压缩解压流程,并确保有足够的磁盘空间和内存。
Linux 文件压缩与解压 rar gz 和 zip 格式详解 📦