Linu压缩解压
在Linux系统中,压缩和解压是日常操作的重要组成部分,用于节省存储空间、传输文件或归档数据。以下是常用的压缩工具及其命令用法:
一、基础压缩格式
1. .zip
格式
- 压缩:
zip
命令(需先安装,如sudo apt install zip
)zip archive.zip file1.txt file2.jpg # 压缩多个文件 zip -r folder.zip myfolder/ # 递归压缩目录
- 解压:
unzip
命令unzip archive.zip # 解压到当前目录 unzip archive.zip -d /target/ # 解压到指定目录
2. .tar
格式(归档,不压缩)
# 创建 tar 包
tar -cvf archive.tar file1.txt dir/ # c=创建,v=显示进度,f=指定文件名# 解压 tar 包
tar -xvf archive.tar # x=提取,v=显示进度,f=指定文件名
tar -xvf archive.tar -C /target/ # 解压到指定目录
3. .tar.gz
或 .tgz
格式(tar + gzip 压缩)
# 压缩(等价于先 tar 再 gzip)
tar -czvf archive.tar.gz file1.txt dir/ # z=gzip 压缩# 解压
tar -xzvf archive.tar.gz
4. .tar.bz2
格式(tar + bzip2 压缩,比 gzip 压缩率更高)
# 压缩
tar -cjvf archive.tar.bz2 file1.txt dir/ # j=bzip2 压缩# 解压
tar -xjvf archive.tar.bz2
5. .tar.xz
格式(tar + xz 压缩,压缩率最高,速度较慢)
# 压缩
tar -cJvf archive.tar.xz file1.txt dir/ # J=xz 压缩# 解压
tar -xJvf archive.tar.xz
二、其他压缩格式
6. .gz
格式(单个文件压缩,非目录)
# 压缩(会删除原文件)
gzip file.txt # 生成 file.txt.gz# 解压(会删除原压缩文件)
gunzip file.txt.gz # 恢复为 file.txt
gzip -d file.txt.gz # 同上
7. .bz2
格式
# 压缩
bzip2 file.txt # 生成 file.txt.bz2# 解压
bunzip2 file.txt.bz2
bzip2 -d file.txt.bz2
8. .xz
格式
# 压缩
xz file.txt # 生成 file.txt.xz# 解压
unxz file.txt.xz
xz -d file.txt.xz
9. .7z
格式(高压缩率,需安装 p7zip)
# 安装
sudo apt install p7zip-full # Debian/Ubuntu# 压缩
7z a archive.7z file1.txt dir/ # a=添加到压缩包# 解压
7z x archive.7z # x=解压(保留路径)
7z e archive.7z # e=解压(不保留路径)
三、常用选项
选项 | 含义 | 适用命令 |
---|---|---|
-v | 显示详细进度 | 所有压缩/解压命令 |
-r | 递归处理目录 | zip 、7z |
-C | 指定解压目标目录 | tar 、unzip 、7z |
-f | 指定压缩文件名 | tar 、zip 、7z |
-k | 保留原文件(不解压时删除) | gzip 、bzip2 、xz |
-9 | 最高压缩比(速度较慢) | zip 、7z |
四、实战技巧
1. 查看压缩包内容
unzip -l archive.zip # 查看 zip 包内容
tar -tf archive.tar.gz # 查看 tar 包内容
7z l archive.7z # 查看 7z 包内容
2. 压缩时排除特定文件/目录
# tar 排除目录
tar -czvf archive.tar.gz --exclude=dir/logs/ dir/# zip 排除目录
zip -r archive.zip dir/ -x "dir/logs/*"
3. 压缩加密
# zip 加密(需输入密码)
zip -e secure.zip file.txt# 7z 加密(压缩和内容均加密)
7z a -pMyPassword secure.7z file.txt
五、命令对比表
格式 | 压缩命令 | 解压命令 | 特点 |
---|---|---|---|
.zip | zip -r archive.zip dir/ | unzip archive.zip | Windows/Linux 通用,支持加密 |
.tar | tar -cvf archive.tar dir/ | tar -xvf archive.tar | 仅归档,不压缩 |
.tar.gz | tar -czvf archive.tar.gz dir/ | tar -xzvf archive.tar.gz | 最常用,平衡压缩率和速度 |
.tar.bz2 | tar -cjvf archive.tar.bz2 dir/ | tar -xjvf archive.tar.bz2 | 压缩率更高,速度较慢 |
.tar.xz | tar -cJvf archive.tar.xz dir/ | tar -xJvf archive.tar.xz | 压缩率最高,适合大文件 |
.7z | 7z a archive.7z dir/ | 7z x archive.7z | 压缩率极高,支持多线程 |
六、常见问题
-
中文文件名乱码:
# unzip 解压含中文的 zip 包 unzip -O CP936 archive.zip # Windows 系统创建的 zip 包 unzip -O UTF-8 archive.zip # Linux 系统创建的 zip 包
-
压缩大文件:
# 使用 pigz 替代 gzip(多线程加速) tar -cvf - dir/ | pigz -9 > archive.tar.gz # 需先安装 pigz
-
分卷压缩(适合传输):
# zip 分卷(每卷 100MB) zip -r -s 100m archive.zip dir/# 7z 分卷 7z a -v100m archive.7z dir/