Linux压缩解压命令从入门到实战:tar、gzip、zip
为什么你需要学会这些命令
服务器运维中,压缩解压是每天都要面对的操作:备份网站文件、传输日志、下载源码包……几乎所有远程服务器都默认支持 tar、gzip、zip。
这几个命令看着多,核心逻辑很简单——打包装在一起、压小节省空间、解开复原。
下面我按照实际使用频率,带你一步步实操。
操作前先确认这几件事
- 登录服务器:推荐用 SSH 工具(比如 Xshell、Putty)连到你的服务器。
- 确认工具已安装:绝大多数 Linux 发行版都预装了以下命令,如果报错“command not found”,用包管理器安装:
- CentOS/RedHat:
yum install -y tar gzip zip unzip - Ubuntu/Debian:
apt install -y tar gzip zip unzip
- 建议在一个空目录里练习:
mkdir /tmp/compress-test && cd /tmp/compress-test,避免污染真实文件。
动手试一试:常用压缩与解压命令
1. tar 打包 + gzip 压缩(最常用)
tar 本身只负责打包,不压缩;
配合 -z 参数才会调用 gzip 压缩,生成 .tar.gz(或 .tgz)文件。
打包压缩整个目录:
tar -czvf mybackup.tar.gz /var/www/html-c:创建打包文件-z:通过 gzip 压缩-v:显示处理过程(新手建议加,看得见进度)-f:指定文件名(必须放在最后一位)
解压到当前目录:
tar -xzvf mybackup.tar.gz-x:解包- 如果想解压到指定目录,加
-C /目标路径:
tar -xzvf mybackup.tar.gz -C /tmp/restore2. gzip 单独压缩(压缩单个文件)
gzip access.log # 压缩后生成 access.log.gz,原文件消失
gzip -d access.log.gz # 解压,恢复为 access.log
gunzip access.log.gz # 与 gzip -d 等价注意:gzip 不能压缩目录,只针对文件。如果需要保留原文件,加 -k(需要较新版本)或先复制。3. zip / unzip 跨平台压缩(与 Windows 通用)
压缩文件或目录:
zip -r project.zip /home/user/project-r:递归处理子目录(必加,否则只压空目录)
解压:
unzip project.zip -d /tmp/unziped-d:指定解压目标目录,不加则解压到当前目录。
这些坑我踩过,帮你避开
| 坑 | 解决方法 |
|------|--------|
| 打包后文件太大:忘记用压缩参数 -z | 检查命令是否包含 -z,或者用 tar -czvf |
| 解压时提示“Cannot open: No such file” | 确认文件名拼写正确,且当前目录下有该文件 |
| zip 解压出现乱码(Windows 上传的 zip 包) | 加 -O 参数指定编码:unzip -O GBK file.zip(新版本 support) |
| tar 解压到已有目录时覆盖文件 | 先用 tar -tvf 包名.tar.gz 查看内容,确认无冲突 |
验证压缩与解压是否成功
- 检查文件大小:
ls -lh查看压缩后文件明显变小。 - 查看包内列表而不解压:
- tar:
tar -tvf mybackup.tar.gz - zip:
unzip -l project.zip
- 解压后对比内容:
diff -r 原始目录 解压目录无输出说明完全一致。
最后说一句
如果你正在处理 Linux压缩解压命令,建议先按本文步骤完整执行一遍,遇到错误提示时先回看上面的避坑表。
日常运维中,80% 的压缩解压操作就是 tar -czvf 打包 + tar -xzvf 解压,记住这两个组合,你就能应付绝大多数场景了。