Day 5:打包与压缩
·
2 分钟阅读
linux学习路线压缩tar
Day 5:打包与压缩
今日目标:用 tar 打包归档,用 gzip/bzip2 压缩,用 unzip 解压 zip——打包 ≠ 压缩,搞清楚区别 🎯
命令速览
| 命令 | 用途 | 关键参数 |
|---|
tar -cvf | 创建 tar 归档(不压缩,只打包) | c创建 v详细 f文件 |
tar -xvf | 解包 tar 归档 | x解包 |
tar -czvf | 创建 gzip 压缩的 tar.gz | z=gzip |
tar -xzvf | 解包 tar.gz | z=gzip |
tar -cjvf | 创建 bzip2 压缩的 tar.bz2 | j=bzip2 |
gzip / gunzip | 压缩/解压单个文件(不是归档) | |
unzip | 解压 .zip 文件 | |
逐个击破
① tar 归档(不压缩)
- 语法:
tar -cvf <ARCHIVE.TAR> <SRC> - 🖥️ 上手练(先准备数据):
mkdir -p /tmp/tar-demo/{docs,src}
echo "readme" > /tmp/tar-demo/README
echo "hello" > /tmp/tar-demo/src/main.sh
echo "config" > /tmp/tar-demo/docs/config.txt
tar -cvf /tmp/demo.tar -C /tmp tar-demo/——打包(-C 先切换到 /tmp)ls -lh /tmp/demo.tar——查看包大小(接近原文件总和,没压缩)rm -rf /tmp/tar-demo——删除原始目录tar -xvf /tmp/demo.tar -C /tmp——解包到 /tmpls -lR /tmp/tar-demo/——验证文件完整还原
- ⚠️ 常见坑:tar 打包路径是相对路径——如果打包时用了绝对路径,解包时也会按绝对路径覆盖(危险!)
② tar.gz 压缩归档
- 语法:
tar -czvf <ARCHIVE.TAR.GZ> <SRC> / tar -xzvf <ARCHIVE.TAR.GZ> - 🖥️ 上手练:
tar -czvf /tmp/demo.tar.gz -C /tmp tar-demo/——创建 gzip 压缩包ls -lh /tmp/demo.tar /tmp/demo.tar.gz——对比大小,压缩后明显更小rm -rf /tmp/tar-demo——删除tar -xzvf /tmp/demo.tar.gz -C /tmp——解压- 验证文件一样:
diff -r /tmp/tar-demo /tmp/tar-demo-orig(如果有备份的话)
③ tar.bz2 压缩归档
- 语法:
tar -cjvf <ARCHIVE.TAR.BZ2> <SRC> / tar -xjvf <ARCHIVE.TAR.BZ2> - 🖥️ 上手练:
tar -cjvf /tmp/demo.tar.bz2 -C /tmp tar-demo/ls -lh /tmp/demo.tar.gz /tmp/demo.tar.bz2——bzip2 通常比 gzip 压缩率更高但更慢
④ gzip / gunzip — 单文件压缩
- 语法:
gzip <FILE> / gunzip <FILE.GZ> - 🖥️ 上手练:
cp /etc/hosts /tmp/hosts.copy && ls -lh /tmp/hosts.copy——记录原始大小gzip /tmp/hosts.copy && ls -lh /tmp/hosts.copy.gz——压缩后 .copy 变成了 .copy.gzgunzip /tmp/hosts.copy.gz && ls -lh /tmp/hosts.copy——解压恢复
- ⚠️ 常见坑:
gzip 只能压缩单个文件,不能压缩目录。目录要用 tar + gzip 组合
⑤ unzip — 解压 .zip 文件
- 语法:
unzip <FILE.ZIP> - 🖥️ 上手练:
cd /tmp && zip -r demo.zip tar-demo/(如果没有 zip 命令:apt install zip 或跳过)unzip -l /tmp/demo.zip——列出 zip 包内容(不解压)unzip /tmp/demo.zip -d /tmp/unzipped/——解压到指定目录
- ⚠️ 常见坑:
.tar.gz 和 .zip 是不同的格式,.tar.gz 用 tar 解,.zip 用 unzip 解
💪 今日必刷(全部终端实操)
- 创建
/tmp/myproject/ 目录,里面放 3 个子目录各 2 个文件,打包为 myproject.tar - 把同一个目录打包压缩为
myproject.tar.gz 和 myproject.tar.bz2,对比三个文件的大小 - 删除原目录,用
tar -xzvf 从 myproject.tar.gz 恢复,验证文件完整性 - 用
tar -tzvf /tmp/myproject.tar.gz 查看压缩包内容(不解压直接列出) - 排错题:你从网上下载了
app.tar.gz,执行 unzip app.tar.gz 报 End-of-central-directory signature not found——为什么?正确的解压命令是什么? - 排错题:打包时用
tar -czvf /tmp/backup.tar.gz /etc/nginx/(绝对路径),解压 tar -xzvf /tmp/backup.tar.gz 后文件被解压到了 /etc/nginx/ 而不是当前目录——为什么?如何安全打包绝对路径?
📚 命令详解
本文采用 CC BY-NC-SA 4.0
更多链接
返回顶部