news 2026/9/22 9:49:06

Linux压缩解压入门:tar、gzip、zip 三个命令一次吃透

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux压缩解压入门:tar、gzip、zip 三个命令一次吃透

Linux压缩解压入门:tar、gzip、zip 三个命令一次吃透

【免费下载链接】linux-tutorial:penguin: Linux教程,主要内容:Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial

升级要上了,动手前得把 /var/www 整个目录打成压缩包丢进备份目录;同事发来的源码包却是 .tar.gz,你愣是没拆开。Linux压缩解压看着杂,就是 tar、gzip、zip 三个工具各管一段——linux-tutorial 仓库里攒了不少实战。这篇按"解包→备份→传文件"走一遍,每节只留能直接复制的最小命令集。

概念钥匙:打包和压缩是两码事

先记住一点:打包不等于压缩

tar 像行李箱,把一堆文件和目录装进一个 .tar 文件,体积一点没变;gzip 像真空袋,把单个文件压成 .gz,体积肉眼可见地缩下去。.tar.gz 就是两者叠加:先 tar 装好,再 gzip 抽气。想明白这一句,两个最常见的困惑就通了:

  • tar -cvf之后大小没变?只用了行李箱,没用真空袋。
  • gzip 压不了目录?真空袋一次只能装一个东西,得先让 tar 把目录装进行李箱,再整体压缩。

记混的后果很具体:对目录直接跑 gzip 会报错退出,或者把一堆 .gz 散落一地,到时候一个个还原更累。

🔓 解包场景:.tar、.tar.gz、.tar.bz2 怎么拆

拆包就看后缀:纯 .tar 直接解,.gz 加 -z,.bz2 加 -j。生产环境里我习惯先用 -tvf 列一遍清单再动手,免得文件解错地方:

# 先看包里有什么 tar -tvf source.tar.gz # 纯打包文件 tar -xvf package.tar # gzip 压的包,-z 对应 gzip tar -zxvf source.tar.gz # bzip2 压的包,-j 对应 bzip2 tar -jxvf package.tar.bz2

参数拆开看:-t 列清单、-x 解出、-v 显示过程、-f 指定包名。想解到别的路径,在行尾追加 -C /目标/目录 即可。更多组合见仓库里的Linux 文件压缩和解压。

📦 备份场景:Linux目录压缩备份到指定路径

日常把目录备份走,一条 tar 就够。-c 建包、-v 显示过程、-f 定包名,-z 走 gzip,-j 走 bzip2:

# 打包 + gzip,包名带日期戳防覆盖 tar -zcvf /backup/app_$(date +%Y%m%d).tar.gz /var/www/app # 磁盘紧张换 bzip2:压得更小,速度慢一截 tar -jcvf /backup/app_$(date +%Y%m%d).tar.bz2 /var/www/app

想精细控制程度,gzip 的级别参数从 1 排到 9,数字越小越快,9 的压缩率最高,默认 6 居中。注意 tar 压缩级别要写在包名后面;另外 gzip 直接压会吃掉原文件,想留原件就用 -c 把结果导出去:

# -1 求快,-9 求小 gzip -1 quick.log gzip -9 archive.log # tar 调 gzip:级别参数跟在包名后 tar -zcvf fast_backup.tar.gz -1 /data/logs # 保留原文件:结果写入新文件 gzip -c big.log > big.log.gz # 解压:-d 或 gunzip 二选一 gunzip big.log.gz

顺带一句,-C 还能改变包内路径基准:tar -zcvf /backup/x.tar.gz -C /var/www app,包内不再带全盘绝对路径,换机器恢复时更灵活。

📤 跨平台场景:zip 打包、排除文件、解压到指定目录

给 Windows 同事发文件,用 zip 最省事。两个参数最高频:-r 递归进目录,-x 排除不要的东西——日志和临时文件挡在外面,包体干净还小一号:

# 递归打目录,顺带排除日志和临时文件 zip -r project.zip src/ docs/ -x "*.log" "*.tmp" # 对方解压到指定目录;-o 表示同名直接覆盖 unzip project.zip -d /tmp/recv/ # 不拆包先看清单;大文件传完先验完整性 unzip -l project.zip unzip -t project.zip

zip 默认会逐个列出文件名,嫌吵就加 -q 安静处理。目录大到超过介质限制时,分卷打,每个卷 100MB,收包方用同一条命令合回去:

# 分卷:生成 project.zip.001、.002…… zip -s 100m -r project.zip /data/big/ # 合并:把分卷并回一个完整包 zip -s 0 -r project.zip project.zip.001

🧰 实战脚本:网站备份 + 自动保留最近 10 份

这个脚本干两件事:打一份带时间戳的备份,再把超出最近 10 份的旧备份删掉,存好丢进 crontab 就能长期跑:

#!/bin/bash # 备份站点目录,自动清理,只留最近 10 份 SRC=/var/www/site DIR=/backup F="site_$(date +%Y%m%d_%H%M).tar.gz" tar -zcvf "$DIR/$F" "$SRC" ls -t "$DIR"/site_*.tar.gz | tail -n +11 | xargs -r rm -f -- echo "backup done: $DIR/$F"

清理逻辑拆开看:ls -t按时间从新到旧排,tail -n +11取第 11 份往后,xargs -r保证列表为空时什么都不做,避免误删。仓库里还有一个同类案例,系统快照报告脚本 也是拿 tar 把系统关键信息打包归档的。

⚡ 常见坑:.tar.xz、认不出的格式、赶时间

包是 .tar.xz。那是 xz 压的,参数是大写 -J,别和小写 -j(bzip2)搞混:

# xz 压缩包,注意大写 tar -Jxvf package.tar.xz

后缀见所未见,不知道是什么。先用 file 命令问它真实身份,再决定用什么拆:

file mystery.bin

赶时间,速度优先。把级别降到 1 就行:gzip -1zip -r -1,或 tar 包名后追加 -1。同一份数据,1 级和 9 级的耗时能差出几倍,空间紧张才值得上 9。

命令速查表

需求命令
打包不压缩tar -cvf pack.tar dir/
打包 + gziptar -zcvf pack.tar.gz dir/
打包 + bzip2tar -jcvf pack.tar.bz2 dir/
解 .tar.gztar -zxvf pack.tar.gz
解 .tar.bz2tar -jxvf pack.tar.bz2
解 .tar.xztar -Jxvf pack.tar.xz
只看包内清单tar -tvf pack.tar.gz
解压到指定目录tar -zxvf pack.tar.gz -C /tmp/out/
gzip 保留原文件gzip -c a.txt > a.txt.gz
解压 gzgunzip a.txt.gz
zip 递归 + 排除文件zip -r a.zip dir/ -x "*.log"
zip 解压到指定目录unzip a.zip -d /tmp/out/
zip 完整性测试unzip -t a.zip

把"打包"和"压缩"分开理解之后,参数其实不用死记:看后缀选工具,-z/-j/-J 对号入座就行。更细的参数组合和边界情况,可以翻 linux-tutorial 仓库的Linux 命令大全继续练手。

【免费下载链接】linux-tutorial:penguin: Linux教程,主要内容:Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/22 9:48:21

佟刚源码拆解:3个高频面试题背后的架构真相

佟刚源码拆解:3个高频面试题背后的架构真相 学会语法却不知怎么搭项目?这是无数应届生的噩梦。你背熟了Python的类、Java的接口,却在面对一个真实需求时手足无措。更扎心的是,面试官抛出的【高频面试题】,往往不是考语法,而是考你对底层机制的理解。…

作者头像 李华
网站建设 2026/9/22 9:48:11

3天搞定绵阳论坛完整示例,面试不再卡壳

3天搞定绵阳论坛完整示例,面试不再卡壳 面试被问原理答不上来,这行字戳中了多少转岗新人的肺管子?你背了八股文,却在实战项目里栽了跟头。今天不讲虚的,直接上 绵阳论坛 的完整示例,用Python+Flask+SQLite,从零到部署,代码全给,注释逐行拆。 项目目标与痛点定位…

作者头像 李华
网站建设 2026/9/22 9:48:09

表格怎么自动换行入门到精通实战

表格怎么自动换行入门到精通实战 看了一堆教程还是不会写项目?别急,咱们直接上手。很多开发者在后台看到长文本把表格撑得老宽,或者数据被截断,心里直犯嘀咕。其实,搞定 表格怎么自动换行 这件事,从 入门到精通 的路径并不复杂,核心就两个字:控制。 不是控制用户,是控制浏览器的默认行为。…

作者头像 李华
网站建设 2026/9/22 9:48:07

四级真题手写实现:这份速查手册让你告别教程依赖

四级真题手写实现:这份速查手册让你告别教程依赖 看了一堆教程还是不会写项目?别怪自己笨,是你没把知识点变成肌肉记忆。很多开发者卡在“看懂了”和“写得出”之间,根本原因是缺少一份能随时翻看的 速查手册…

作者头像 李华