Linux压缩解压命令综合运用:从零开始掌握tar
为什么服务器运维离不开压缩解压命令
在Linux服务器上,无论是传输日志、备份网站数据,还是从网上下载安装包,压缩和解压几乎每天都会用到。
掌握tar、gzip、bzip2和zip这几个命令,就能处理绝大部分场景。
本文从零开始,不讲废话,只给能直接执行的命令和注意事项。
开始之前:确认系统环境和基础工具
登录服务器后,先用下面命令检查是否安装了常用压缩工具(通常系统默认自带):
which tar gzip bzip2 zip unzip
如果返回路径,说明已经可用;
如果没有路径,比如zip或unzip缺失,可以用包管理器安装:
- CentOS/RHEL:
yum install -y zip unzip bzip2 - Ubuntu/Debian:
apt install -y zip unzip bzip2
另外,建议在一个临时目录(如/tmp/test)里操作,避免误删重要文件。
四大核心命令实战演练
1. tar:打包+压缩一步到位
tar本身只负责打包(把多个文件合并成一个),常搭配z(gzip)或j(bzip2)实现压缩。
创建 tar.gz 压缩包(最常用):
tar -czvf myarchive.tar.gz /path/to/dir
c创建,z通过gzip压缩,v显示过程,f指定文件名。
解压 tar.gz 到指定目录:
tar -xzvf myarchive.tar.gz -C /target/dir
x解压,-C指定解压目标路径。注意:目标目录必须存在,否则命令会出错。
只看压缩包里的内容(不解压):
tar -ztvf myarchive.tar.gz
2. gzip / gunzip:单独压缩单个文件
gzip只能压缩单个文件,不能打包目录,常与tar配合使用。
压缩文件:
gzip access.log
原文件被替换为access.log.gz。
解压:
gunzip access.log.gz
# 或 gzip -d access.log.gz
3. bzip2:更高压缩率,更慢速度
用法与gzip几乎一样,但压缩率更高:
bzip2 bigfile.tar
bunzip2 bigfile.tar.bz2
4. zip / unzip:兼容Windows的格式
创建zip:
zip -r archive.zip folder/
-r 递归,包含子目录。
解压zip到当前目录:
unzip archive.zip
解压到指定目录:
unzip archive.zip -d /target/path
注意:Linux上解压zip时,如果文件名包含中文或特殊字符,建议先通过locale确认编码,否则可能乱码。
避坑指南:新手最容易踩的五个坑
- 解压时忘记
-C指定目录,文件会散落在当前目录下。建议养成习惯,每次都写-C。 - 解压tar.gz时用了
-xvf却漏写z,命令仍然执行但会报错,因为tar不认识gzip格式。务必加上z或j。 - 覆盖已有文件:
tar和zip默认静默覆盖,没有警告。可以用tar --skip-old-files跳过已有文件,或用unzip -n跳过。 - 权限丢失:普通用户解压root用户的压缩包后,文件属主变为当前用户,恢复时需用
chown调整。 - 硬盘空间不足:压缩包本身就很大时,要确保目标分区有双倍空间(一个压缩包+一个解压后的文件)。
效果验证:确保文件完整且可用
解压后,建议做三件事:
- 对比文件数量:用
ls -lR | wc -l统计解压目录的文件数,和打包前对比(可用tree命令更直观)。 - 检查关键文件时间戳:
stat 文件名查看mtime是否符合预期。 - 验证压缩包完整性:对于
tar.gz,可以用gzip -t 文件名.tar.gz测试gz部分是否损坏;对于zip,用unzip -t archive.zip测试。
如果你正在处理Linux压缩解压命令综合运用,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。