Linux之文件打包,压缩,解压

[复制链接]
发表于 2026-10-3 22:39:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

打包和压缩在 Linux 里常被混为一谈,其实是两件事:打包是把一堆文件合成一个归档文件,压缩是让这个归档(或单个文件)体积变小。tar 负责打包、也能搭配压缩算法;zip/unzip 则是自带压缩的一整套。这篇把 tar、zip、unzip 的常用参数、典型命令和几个容易踩的坑一次讲清楚。

一、 tar:归档的主力

tar(tape archive)最初是为磁带设备设计的,如今已成为文件操作的标准工具:能把一组文件和目录打包成单个归档文件,也能从归档里还原出来。它的语法是 tar [选项] file.tar [文件...]。

1.1 常用参数

  • -c:创建新的归档文件(打包)。
  • -x:从归档文件中提取文件(解包)。
  • -f:指定归档文件名,通常必须写。
  • -v:显示操作的详细信息,能看到处理了哪些文件。
  • -z:通过 gzip 方式压缩归档文件(产出 .tar.gz)。
  • -j:通过 bzip2 方式压缩归档文件(产出 .tar.bz2)。
  • -C:指定目录,解包或打包时切到目标路径。

1.2 常规操作

tar -cvf file.tar file1          # 把 file1 打包成一个文件
tar -cvf aa.tar aa/              # 把 aa 目录打包
tar -zcvf aa.tar.gz aa/          # 打包并用 gzip 压缩
tar -tvf aa.tar                  # 查看归档文件内容(不解压)
tar -xvf aa.tar                  # 解压到当前路径
tar -xvf aa.tar -C bb/           # 解压到指定目录

记忆口诀:-c 建、-x 解、-t 看、-v 显过程、-f 后面跟文件名。-z(gzip)和 -j(bzip2)决定用什么算法压,后缀名要跟算法对上,不然别人解不开。

二、 zip:自带压缩

zip 的语法是 zip file.zip [选项] 文件,压缩目录要加 -r。

2.1 常用参数

  • -r:递归压缩文件夹。
  • -q:不显示压缩过程,静默执行。
  • -d:从压缩包里删除指定文件。
  • -u:更新现有 zip,把新文件或改过的文件加进去。
  • -f:刷新(只更新已存在的指定文件)。
  • -m:把文件移进 zip,同时删掉源文件(移动归档)。
  • -e:对 zip 加密(会提示输入两次密码)。
  • -z:给压缩包加注释。

2.2 常规操作

zip aa.zip aa.tar          # 压缩某个文件
zip -r aa.zip aa/          # 压缩某个目录
zip -q -r aa.zip aa/       # 静默压缩
zip file.zip -d file5      # 从压缩包删除某个文件
zip file.zip -u file5      # 更新(新增/替换)某个文件
zip file.zip -f file5      # 刷新已存在的那个文件
zip file.zip -m file6      # 加进去并删除源文件
zip test.zip file* -e      # 压缩并加密
zip test.zip file* -z      # 压缩并添加注释

注意 -m 会把源文件删掉,执行前先想清楚;-e 的密码是无提示输入的,忘了就只能靠 unzip -P 配合猜,所以加密包务必自己记牢密码。

三、 unzip:解压与检查

unzip 用来解压 zip 包,语法 unzip [选项] 压缩包名。

3.1 常用参数

  • -l:列出压缩包内包含的文件(不解压)。
  • -t:测试压缩包是否完整正确。
  • -v:执行时显示详细信息。
  • -z:只显示压缩文件的备注文字。
  • -n:解压时不要覆盖已有文件。
  • -P:用 zip 的密码解包。
  • -q:不显示任何信息。
  • -d:指定解压后存放的目录。

3.2 常规操作

unzip -l t.zip                 # 只看内容不解压
unzip t.zip -d test/           # 解压到指定目录(目录不存在会自动建)
unzip -t t.zip                 # 测试压缩包有效性
unzip -q t.zip                 # 静默解压

有个细节值得留意:用 zip -r t.zip test/ 打出来的包里路径是 test/file1 这种,再 unzip t.zip -d a/ 会在 a/ 下再套一层 test。想扁平一点,打包时先看结构、或者用 -j 去掉路径层级。

四、三种格式怎么选

  • .tar.gz(tgz):Linux 下最常见,速度快、兼容性好,日志日志和源码包首选。
  • .tar.bz2:压缩率更高但更慢,适合不急着解压的大数据集。
  • .zip:Windows 和 Linux 都能直接开,需要跨系统传文件、或者要加密时选它。

五、常见坑

  • tar: Cowardly refusing to create an empty archive:命令行写错,-f 后面忘了跟文件名。
  • gzip: stdin: not in gzip format:用 -z 解了一个没压缩的 tar,去掉 -z 试试。
  • 解出来路径多一层:打包时压了目录本身,解压目标目录又建了一次,规划好 -C。
  • 解压覆盖掉重要文件:先 unzip -n 或者先 unzip -l 看一遍再动手。
  • 磁盘不够:压之前 df -h 看一眼,tar 打包过程中会同时存在原文件和归档两份。

整体记住一句话:Linux 打包压缩分工是 tar 管归档、gzip/bzip2 管压缩、zip 一把梭,按场景选工具就顺了。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表