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
新手易踩坑提醒
- tar的-f选项必须放最后 :比如
tar -czvf test.tar.gz test/是对的,tar -czf v test.tar.gz test/会报错(把v当成文件名); - zip压缩目录必加-r :不加-r的话,
zip test.zip test/只会生成一个空的test目录压缩包,不会包含里面的文件; - 压缩率对比:tar.gz(gzip)≈ zip < tar.bz2(bzip2),Linux内传输优先用tar.gz,跨平台传输优先用zip。
总结
- tar :Linux原生打包/压缩工具,核心记
-czvf(压缩.tar.gz)、-xzvf(解压.tar.gz)、-C(指定解压目录),适合Linux内备份/传输; - zip/unzip :跨平台压缩工具,压缩目录必须加
-r,解压指定目录用-d,适合Windows/Linux/Mac之间传输文件; - 新手高频用法:tar压缩(
tar -czvf 包名.tar.gz 目录)、tar解压(tar -xzvf 包名.tar.gz -C 目标目录)、zip压缩(zip -r 包名.zip 目录)。