Linux命令打包/压缩(tar)、通用压缩(zip)详解

Linux中tar(打包/压缩核心命令)、zip(通用压缩命令)的简介、核心用法选项,以及新手能直接上手的常见用法,今天我会用通俗易懂的语言梳理,重点标注打包/压缩的核心场景、选项组合和新手易踩的坑,兼顾实用性和入门难度。


1. tar 命令

简介

tar 是Linux最核心的打包/压缩命令,新手首先要分清两个概念:

  • 打包:把多个文件/目录合并成一个.tar文件(仅合并,不压缩,体积不变);
  • 压缩:配合gzip/bzip2/xz等算法,将.tar文件压缩成更小的.tar.gz/.tar.bz2文件。

tar是Linux原生且使用最广的压缩工具,压缩率高,适合备份、传输大文件/目录,新手核心记"打包/解压"两组选项即可覆盖90%场景。

常用选项(新手必记,组合使用)

tar的选项无需加-也可生效(如tar czvf等价于tar -czvf),-f 必须放在所有选项最后(指定压缩包文件名),这是新手最易踩的坑。

选项 作用(新手友好版)
-c 创建新的打包/压缩文件(核心:用于"打包/压缩"操作)
-x 解压打包/压缩文件(核心:用于"解压"操作)
-f 指定压缩包文件名(必须放最后!如-f test.tar.gz
-z 用gzip算法压缩/解压(对应.tar.gz/.tgz后缀,最常用)
-j 用bzip2算法压缩/解压(对应.tar.bz2后缀,压缩率更高,速度稍慢)
-v 显示打包/解压的过程(能看到处理了哪些文件,新手排错有用)
-t 查看压缩包内的文件列表(不解压,仅预览)
-C 指定解压目录(解压到指定位置,而非当前目录)

常见用法

bash 复制代码
# ========== 核心场景1:打包+压缩(最常用) ==========
# 1. gzip压缩(.tar.gz/.tgz,推荐):打包并压缩test目录为test.tar.gz
tar -czvf test.tar.gz test/
# 解释:c=创建,z=gzip压缩,v=显示过程,f=指定文件名(放最后)

# 2. bzip2压缩(.tar.bz2):压缩率更高,速度稍慢
tar -cjvf test.tar.bz2 test/

# 3. 仅打包(不压缩,.tar):适合临时合并文件
tar -cvf test.tar test/

# ========== 核心场景2:解压 ==========
# 1. 解压.tar.gz文件到当前目录
tar -xzvf test.tar.gz

# 2. 解压到指定目录(比如解压到/home/user/下,-C后接目标目录)
tar -xzvf test.tar.gz -C /home/user/

# 3. 解压.tar.bz2文件
tar -xjvf test.tar.bz2

# ========== 实用场景:预览压缩包内容(不解压) ==========
tar -tzvf test.tar.gz

2. zip / unzip 命令

简介

zip 是Linux中跨平台压缩命令,生成的.zip格式文件可直接在Windows/Mac上解压(tar.gz需专用工具),新手常用它做"跨系统文件传输"。

  • zip:负责创建.zip压缩包(直接压缩,无需先打包);
  • unzip:配套的解压命令(zip压缩的文件需用unzip解压)。

注意:部分系统默认无zip/unzip,需先安装:sudo apt-get install zip unzip(Debian/Ubuntu),只针对debian系列进行讲解。

常用选项

(1)zip 常用选项
选项 作用(新手友好版)
-r 递归压缩目录(必加!压缩目录时不加-r只会压缩目录名,不会包含里面的文件)
-q 安静模式(不显示压缩过程,仅输出结果)
-d 删除压缩包内的指定文件(如zip -d test.zip a.txt
-u 更新压缩包内的文件(比如替换旧版本文件)
-9 最高压缩率(默认是6,-9压缩更小但速度慢)
(2)unzip 常用选项
选项 作用(新手友好版)
-l 查看压缩包内的文件列表(不解压,仅预览)
-d 指定解压目录(类似tar的-C)
-q 安静模式(不显示解压过程)
-o 覆盖已有文件(无需手动确认)

常见用法

bash 复制代码
# ========== zip 压缩 ==========
# 1. 压缩单个文件为test.zip
zip test.zip a.txt

# 2. 压缩目录(必须加-r!新手必记)
zip -r test.zip test/  # 把test目录及里面所有文件压缩为test.zip

# 3. 压缩多个文件/目录(空格分隔)
zip -r all.zip a.txt b.jpg test/

# 4. 高压缩率压缩(-9)
zip -9 -r test.zip test/

# ========== unzip 解压 ==========
# 1. 解压test.zip到当前目录
unzip test.zip

# 2. 解压到指定目录(-d后接目标目录)
unzip test.zip -d /home/user/

# 3. 预览压缩包内容(不解压)
unzip -l test.zip

# 4. 覆盖解压(无需确认)
unzip -o test.zip

新手易踩坑提醒

  1. tar的-f选项必须放最后 :比如tar -czvf test.tar.gz test/是对的,tar -czf v test.tar.gz test/会报错(把v当成文件名);
  2. zip压缩目录必加-r :不加-r的话,zip test.zip test/只会生成一个空的test目录压缩包,不会包含里面的文件;
  3. 压缩率对比:tar.gz(gzip)≈ zip < tar.bz2(bzip2),Linux内传输优先用tar.gz,跨平台传输优先用zip。

总结

  1. tar :Linux原生打包/压缩工具,核心记-czvf(压缩.tar.gz)、-xzvf(解压.tar.gz)、-C(指定解压目录),适合Linux内备份/传输;
  2. zip/unzip :跨平台压缩工具,压缩目录必须加-r,解压指定目录用-d,适合Windows/Linux/Mac之间传输文件;
  3. 新手高频用法:tar压缩(tar -czvf 包名.tar.gz 目录)、tar解压(tar -xzvf 包名.tar.gz -C 目标目录)、zip压缩(zip -r 包名.zip 目录)。
相关推荐
`林中水滴`2 小时前
Linux系列:Ubantu 安装 MySQL 8.0 教程
linux
你我一见如故2 小时前
Linux基础(4)Linux中的开发工具(1)--yum和vim
linux·服务器·编辑器·vim
切糕师学AI2 小时前
GDB: GNU 调试器
服务器·gnu
JiMoKuangXiangQu2 小时前
Linux eBPF 错误:invalid bpf_context access
linux·ebpf
慧一居士2 小时前
ubuntu和centos区别对比,使用方式区别对比及示例
运维
johnny_hhh2 小时前
Confluent 单节点部署配置
运维·阿里云·zookeeper·kafka·centos·数据可视化
kaoa0002 小时前
Linux入门攻坚——61、tomcat负载均衡集群-LB Cluster
linux·tomcat·负载均衡
洋葱 ☠2 小时前
极简部署linux免费ssl证书Let‘s Encrypt,自动续签,nginx/apache都可以,域名指向服务器即可,无需项目
linux·nginx·ssl
星哥说事2 小时前
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台
运维·服务器·docker