在 Linux 系统中,合理使用压缩工具可有效节省存储资源并提升文件传输效率。本文将深入解析 gzip
、zip
和 tar
三种常用工具的核心功能与操作逻辑,并结合文档中的实验案例演示具体用法。
一、gzip:纯文件压缩的轻量级工具
特点:
- 仅支持单个文件压缩,不支持目录打包。
- 压缩后文件后缀为
.gz
,原文件默认会被删除(可通过参数保留)。 - 常与
tar
结合使用(如.tar.gz
格式)。
1.1 核心命令与选项
命令 | 说明 | 常用选项 |
---|---|---|
gzip | 压缩文件 | -c :输出到标准输出(保留原文件)-d :解压缩-k :保留原文件 |
gunzip | 解压缩 .gz 文件 | 等价于 gzip -d |
1.2 实战案例
案例 1:压缩文件并保留原文件
# 进入测试目录
root@ubuntu13:~/gzip#
# 压缩 fstab 和 passwd 文件,显示过程并保留原文件
root@ubuntu13:~/gzip# gzip -vk fstab passwd
fstab: 35.0% -- created fstab.gz # 压缩率35%,生成 fstab.gz
passwd: 63.1% -- created passwd.gz # 压缩率63.1%,生成 passwd.gz
# 验证:原文件(fstab、passwd)和压缩文件并存
root@ubuntu13:~/gzip# ls
fstab fstab.gz passwd passwd.gz
案例 2:解压缩文件
# 解压缩 passwd.gz
root@ubuntu13:~/gzip# gunzip passwd.gz
# 验证:passwd.gz 被删除,恢复原文件 passwd
root@ubuntu13:~/gzip# ls
fstab fstab.gz passwd
二、zip:跨平台的打包压缩工具
特点:
- 支持目录打包和多文件压缩,压缩后后缀为
.zip
。 - 兼容 Windows 系统,但可能丢失文件权限、所有者等元数据。
- 需要单独安装
zip
和unzip
包。
2.1 核心命令与选项
命令 | 说明 | 常用选项 |
---|---|---|
zip | 压缩文件 / 目录 | -r :递归压缩目录-d :指定解压路径 |
unzip | 解压缩 .zip 文件 | -l :列出压缩包内容-d :指定解压到目标目录 |
2.2 实战案例
案例 1:打包所有 .txt
文件为 txt.zip
# 进入测试目录
[root@rocky12 find]#
# 压缩当前目录下所有 .txt 文件
[root@rocky12 find]# zip txt.zip *.txt
adding: test-a.txt (stored 0%) # 存储模式(未压缩,文件内容为0)
adding: test-A.txt (stored 0%)
adding: test-b.txt (stored 0%)
adding: test-B.txt (stored 0%)
# 验证:生成 txt.zip
[root@rocky12 find]# ls
txt.zip test-a.txt test-A.txt test-b.txt test-B.txt
案例 2:解压到指定目录并查看内容
# 列出压缩包内容
[root@rocky12 find]# unzip -l txt.zip
Archive: txt.zip
Length Date Time Name
0 04-25-2025 10:46 test-a.txt
0 04-25-2025 10:46 test-A.txt
0 04-25-2025 10:46 test-b.txt
0 04-25-2025 10:46 test-B.txt
# 解压到当前目录下的 txt 子目录
[root@rocky12 find]# unzip txt.zip -d txt
extracting: txt/test-a.txt # 生成 txt 目录并解压文件
extracting: txt/test-A.txt
extracting: txt/test-b.txt
extracting: txt/test-B.txt
# 验证:txt 目录包含解压后的文件
[root@rocky12 txt]# ll
总用量 0
-rw-r--r--. 1 root root 0 4月25 10:46 test-a.txt
# ...(其他文件类似)
三、tar:全能型归档压缩工具
特点:
- 核心功能是归档(打包),可结合压缩工具(如 gzip、bzip2)生成压缩包。
- 支持保留文件权限、所有者等元数据,适合系统备份。
- 常见格式:
.tar
(未压缩)、.tar.gz
(gzip 压缩)、.tar.xz
(xz 压缩)。
3.1 核心命令与选项
操作 | 命令格式 | 关键选项 |
---|---|---|
打包 | tar -cvf 归档名.tar 源文件/目录 | -c :创建归档-v :显示过程-f :指定归档文件名 |
压缩 | tar -zcvf 归档名.tar.gz 源文件 | -z :通过 gzip 压缩-j :通过 bzip2 压缩-J :通过 xz 压缩 |
解压 | tar -xf 归档名.tar[.gz/xz] | -x :解归档-t :查看归档内容-p :保留文件权限 |
3.2 实战案例
案例 1:打包并压缩 .log
文件
# 进入测试目录
[root@rocky12 find]#
# 打包所有 .log 文件并生成 gzip 压缩包
[root@rocky12 find]# tar zcvf log.tar.gz *.log
ls.log # 正在添加文件
test-a.log
test-A.log
test-b.log
test-B.log
# 验证:生成 log.tar.gz
[root@rocky12 find]# ls
log.tar.gz ls.log test-a.log test-A.log test-b.log test-B.log
案例 2:查看归档内容并解压
# 查看 log.tar.gz 中的文件列表
[root@rocky12 find]# tar -tvf log.tar.gz
-rw-r--r-- root/root 174 2025-04-25 10:57 ls.log # 文件权限、所有者、大小等信息
-rw-r--r-- root/root 0 2025-04-25 10:46 test-a.log
# ...(其他文件类似)
# 创建 log 目录并解压归档
[root@rocky12 find]# mkdir log && cd log
[root@rocky12 log]# tar xf ../log.tar.gz
# 验证:解压后的文件保留原始权限和时间戳
[root@rocky12 log]# ll
总用量 4
-rw-r--r--. 1 root root 174 4月25 10:57 ls.log
-rw-r--r--. 1 root root 0 4月25 10:46 test-a.log
# ...(其他文件类似)
四、工具对比与适用场景
工具 | 压缩格式 | 目录支持 | 跨平台性 | 元数据保留 | 压缩效率 | 典型用途 |
---|---|---|---|---|---|---|
gzip | .gz | 不支持 | 一般 | 不保留 | 中 | 单文件压缩(如日志归档) |
zip | .zip | 支持 | 优 | 部分丢失 | 低 | 跨系统文件传输 |
tar | .tar | 支持 | 一般 | 保留 | 高 | 系统备份、多文件归档(需配合压缩) |
.tar.gz | 支持 | 一般 | 保留 | 中 | 通用压缩(兼顾压缩比与速度) |
五、总结
- 轻量级文件压缩:选
gzip
,搭配tar
实现归档 + 压缩。 - 跨平台传输:选
zip
,注意元数据可能丢失。 - 系统级备份:选
tar
结合xz
/bzip2
,兼顾压缩比与权限保留。
通过文档中的实验案例(如 gzip
保留原文件、tar
压缩日志),可快速掌握不同工具的操作逻辑。建议在实际使用中根据文件类型、传输需求和系统环境选择合适的工具组合。