Linux压缩解压详解

一、tar命令

tar 本身只打包不压缩,但通过与压缩工具配合,可生成 .tar.gz 、 .tar.bz2 、 .tar.xz 等格式

选项含义
-c创建打包文件
-C指定解压目录,打包位置。
-x解压 / 解包,从归档文件中提取文件
-z用 gzip 压缩 / 解压(.tar.gz
-j用 bzip2 压缩 / 解压(.tar.bz2
-J用 xz 压缩 / 解压(.tar.xz
-f指定要解压的 tar 包的包名(必须放最后)。
-t只查看 tar 包中有哪些文件或目录,不对 tar 包做解打包操作。
-v显示解打包的具体过程。
-r递归压缩目录
--exclude排除指定文件/目录

常用操作

# 仅打包(不压缩)
tar -cvf data.tar file1 file2 dir/

# 查看归档内容
tar -tvf data.tar

# 解包到当前目录
tar -xvf data.tar

# 打包并 gzip 压缩(最常用)
tar -zcvf backup.tar.gz /path/to/dir/

# 解压 .tar.gz
tar -zxvf backup.tar.gz

# 解压到指定目录
tar -zxvf backup.tar.gz -C /tmp/extract/

# 打包并 bzip2 压缩(压缩率更高,速度更慢)
tar -jcvf backup.tar.bz2 /path/to/dir/

# 打包并 xz 压缩(压缩率最高,速度最慢)
tar -Jcvf backup.tar.xz /path/to/dir/

# 排除特定文件
tar -zcvf backup.tar.gz data/ --exclude="*.tmp" --exclude="*.log"

# 增量备份:在已有归档上追加新文件。
tar -rvf data.tar new_file.txt

二、zip/unzip命令

安装unzip

# Debian/Ubuntu
apt install zip unzip

# CentOS/RHEL
dnf install zip unzip

zip 命令常用选项及含义

选项含义
-r递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩。
-m将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中。
-d删除包内文件
-q在压缩的时候不显示命令的执行过程。
-压缩级别压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。
-u更新压缩文件,即往压缩文件中添加新文件。
-e加密压缩(交互密码)
-v显示详细的压缩过程信息。
-s 100m分卷压缩(100MB / 卷)

ZIP压缩常用操作

# 压缩单个文件
zip file.zip file.txt file2.txt

# 递归压缩整个目录
zip -r archive.zip ./my_folder

# 压缩并设置密码 (交互式输入,更安全)
zip -e secure.zip secret_folder

# 分卷压缩(每个分卷50MB)
zip -s 50m split.zip large_file.iso

# 排除 .tmp 文件
zip -r project.zip ./src -x "*.tmp"

unzip 命令常用选项及含义

选项含义
-l查看包内容
-d 目录名将压缩文件解压到指定目录下。
-n解压时并不覆盖已经存在的文件。
-o解压时覆盖已经存在的文件,并且无需用户确认。
-q静默解压
-t测试压缩文件有无损坏,但并不解压,校验压缩包。
-x 文件列表解压文件,但不包含文件列表中指定的文件。
-v查看压缩文件的详细信息

unzip解压常用操作

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

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

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

# 解压带密码的文件 (交互式输入)
unzip secure.zip

# 强制覆盖解压
unzip -o secure.zip

# 排除 log 目录解压
unzip secure.zip -x "*/log/*"

解决中文乱码 由 Windows 创建的 zip 文件在 Linux 解压时可能出现中文乱码,可以尝试指定编码:

unzip -O GBK chinese_file.zip

三、gzip/gunzip命令

单独压缩文件(非打包)

gzip/gunzip命令常用选项及含义

选项含义
-c输出到标准输出,不删原文件
-压缩级别压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。
-d解压
-f强制压缩 / 解压,覆盖已有文件,不提示
-n压缩时不保存原文件名、时间戳
-N解压时恢复原文件名、时间戳
-l查看 gz 包内部信息
-t检测压缩包是否损坏,校验压缩包
-q静默模式,不输出错误信息
-r递归处理目录下所有文件(只压缩文件,不打包目录)
-v详细输出

常用操作

# 压缩,删除原文件
gzip 文件名  

# 保留原文件
gzip -c 文件名 > 文件名.gz  

# 最高压缩率(1-9,默认6)
gzip -9 文件名    

#解压
gunzip 文件名.gz
gzip -d 文件名.gz

四、bzip2/bunzip2命令

bzip2/bunzip2(.bz2 高压缩率)

bzip2/bunzip2命令常用选项及含义

选项含义
-压缩级别压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。
-d解压,等同于 bunzip2
-z强制压缩(默认就是压缩,可省略)
-k解压后保留原 .bz2 压缩包
-f强制覆盖解压出来的文件
-q静默解压
-s低内存模式解压,占用更少内存,适合低配机器
-c解压内容输出到标标准输出,不生成文件,可重定向
-v显示详细解压信息
-t检测压缩包是否损坏,校验压缩包

常用操作

# 压缩,删除原文件
bzip2 文件名

# 保留原文件
bzip2 -k 文件名  

#解压
bunzip2 文件名.bz2
bzip2 -d 文件名.bz2

# 强制覆盖解压
bunzip2 -f file.bz2

# 解压输出重定向
bunzip2 -c file.bz2 > newfile

五、xz/unxz命令

xz/unxz(.xz 压缩率最高,速度最慢)

xz/unxz命令常用选项及含义

参数作用
-1 ~ -9压缩级别:-1 最快压缩率最低,-9 最高压缩率最慢,默认 - 6
-d解压,等价 unxz
-z强制压缩(默认启用,可省略)
-k保留原文件,压缩 / 解压都不删除源文件
-f强制覆盖已有文件,不交互询问
-t检测 .xz 压缩包完整性,不解压
-v显示详细过程、压缩率、大小
-q静默模式,只报错,不输出正常日志
-c标准输出,不生成文件,可重定向 > 新文件
-l查看压缩包信息(压缩前后大小、比率)
-T N指定线程数,多线程压缩(如 -T 4 4 线程)
-e极致压缩模式,进一步提高压缩率(更慢)

常用操作

# 压缩,删除原文件
xz 文件名

# 保留原文件
xz -k 文件名 

# 最高压缩率,保留原文件
xz -9k 文件名  

# 极致压缩+保留原文件
xz -ek 文件名 

# 4线程最高压缩,保留原文件
xz -9k -T 4 bigfile

# 普通解压,删 .xz
unxz 文件名.xz
xz -d 文件名.xz

# 解压保留原压缩包
unxz -k file.xz
xz -dk file.xz

# 压缩并重命名保存
xz -c file > file2.xz