Linux学习笔记:压缩打包tar、zip、unzip命令
Linux
下一堆各式各样的压缩文件名:.gz、.tar.gz、tgz、bz2、.Z、.tar
等众多的压缩文件名,此外 Windows
下的 .zip、.rar
也可以在 Linux
下使用。
一、基本概念
1.打包
打包是指将多个文件或者目录放在一起,形成一个总的包,便于保存和传输,但是大小是没有变化的。
2.压缩
压缩是指将一个或者多个大文件或者目录通过压缩算法使文件的体积变小以达到压缩的目的,可以节省存储空间,在压缩的时候通常是先打包再压缩。
3.tar命令
- tar命令参数前面加”-"与不加“-”的执行结果没啥区别
- 区别在于linux风格,加“-”属于System V风格,不加“-”属于BSD风格,所以在使用tar命令的时候它的参数加不加“-”结果是一样的
# tar 命令常用参数
-z 是否同时具有gz属性
-j 是否同时具有bz2属性
-J 是否同时具有xz属性
-x 解压缩、提取打包的内容
-t 查看压缩包内容
-c 建立一个压缩,打包文档
-C 切换到指定目录,表示指定解压缩包的内容和打包的内容存放的目录
-v 显示压缩或者打包的内容
-f 使用文件名 -f选项是必须要用的 -f参数在使用的时候一定排在其他参数的后面
-p 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
-P 保留绝对路径
-r 增加压缩文件 把要存档的文件追加到档案文件的未尾
二、打包
- 打包文件
# 将3个文件打包
tar -cvf result.tar data_202105.txt data_202106.txt data_202107.txt
# 命令 + 参数 + 打包后文件名 + 需要打包的文件
# 显示打包的文件 -v
- 打包目录
# 打包目录
tar -cvf data.tar /test
- 查看文件内容
# 查看文件内容
tar -tf result.tar
- 提取文件到某目录下
tar -xf result.tar -C /data/
如果不使用 -C 指定目录则会将文件提取到当前目录。
- 追加文件
# tar -rf tar文件 需要追加的文件
tar -rf result.tar file.txt
# 查看验证
tar -tf result.tar
三、压缩
linux
主要有三种压缩方式:
- gzip —— 公认的压缩速度最快,压缩大文件的时候与其他的压缩方式相比更加明显,历史最久,应用最广泛的压缩方式
- bzip —— 压缩形成的文件小,但是可用性不如gzip
- xz —— 是最新的压缩方式,可以自动提供最佳的压缩率
压缩的时候应该标明后缀。
参数 | 作用 | 命名方式 |
---|---|---|
-z | 用于gzip压缩方式 | 文件名:data.tar.gz |
-j | 用于bzip2压缩方式 | 文件名:data.tar.bz2 |
-J | 用于xz压缩方式 | 文件名:data.tar.xz |
实操:
# 查看文件
ll -rth
total 2.0G
-rw-r----- 1 xx xx 440M Sep 9 18:20 data_202105.txt
-rw-r----- 1 xx xx 382M Sep 9 18:20 data_202106.txt
-rw-r----- 1 xx xx 378M Sep 9 18:20 data_202107.txt
-rw-r----- 1 xx xx 821M Sep 9 18:25 result.tar
# gzip压缩方式
tar -zcvf result.tar.gz data_202105.txt data_202106.txt data_202107.txt
# bzip2压缩方式
tar -jcvf result.tar.bz2 data_202105.txt data_202106.txt data_202107.txt
# 如果报错需要安装bzip2软件包: yum -y install bzip2
# xz压缩方式
tar -Jcvf result.tar.xz data_202105.txt data_202106.txt data_202107.txt
# 压缩后文件对比
ll -rth
total 2.7G
-rw-r----- 1 xx xx 440M Sep 9 18:20 data_202105.txt
-rw-r----- 1 xx xx 382M Sep 9 18:20 data_202106.txt
-rw-r----- 1 xx xx 378M Sep 9 18:20 data_202107.txt
-rw-r----- 1 xx xx 821M Sep 9 18:25 result.tar
-rw-r----- 1 xx xx 285M Sep 9 18:41 result.tar.gz
-rw-r----- 1 xx xx 213M Sep 9 18:47 result.tar.bz2
-rw-r----- 1 xx xx 216M Sep 9 19:13 result.tar.xz
# 压缩速率、压缩率对比(反比)
压缩速度:gz > bz2 > xz
压缩率:xz > bz2 > gz
四、解压
tar
命令很智能,在解压的时候不需要指明压缩方式,它会自己选择跟压缩方式对应的方式去解压。
解压 gz
压缩方式的文件时不要添加 -z
参数,直接使用 -xf
即可,bz2
和 xz
也一样,会自动选择。
不指定 -C
参数,会直接解压在当前目录。
# 解压
tar -xf result.tar.gz
# 指定目录
tar -xf result.tar.gz -C /data/
五、其他
1.警告
在打包和压缩的过程中,有时候会看到这样的语句:tar: 从成员名中删除开头的“/”
,这个并不是报错,是因为没有加上 -P
选项,没有保留原来的绝对路径去打包或者压缩,提取打包的内容跟解压一样。
如果在压缩文件的时候使用了 -P
选项,那么在解压的时候也要加上 -P
选项,否则也会出现同样的警告。
2.排除文件
在使用 tar
压缩或者打包的时候,可以通过增加 --exclude
来达到排除指定的文件的目的。
# 排除文件
tar -cvf data.tar --exclude=data_202107.txt test
压缩文件也是同理,想要排除指定的目录压缩或者打包也是同理。
六、zip和unzip命令
zip
命令主要用于 Windows
系统下,tar
命令主要用于 unix
系统下,想要在 unix
系统压缩文件后传给Windows
系统使用,一般会使用 zip
命令相对方便点。
查看系统是否已安装 zip
和 unzip
命令:
# 查看版本号
rpm -q zip unzip
# zip-3.0-11.el7.x86_64
# unzip-6.0-16.el7.x86_64
1.zip命令
基本语法:
zip 参数 压缩包名 文件、目录
-m 将文件压缩后,删除原文件
-o 将压缩文件内的所有文件的最新变动时间设为压缩的时间
-q 安静模式,在压缩的时候不显示指令执行的过程
-r 递归压缩,将指定目录下的所有子文件以及文件一起处理
-x 压缩时排除文件列表中的文件
- 压缩目录
# 正常压缩 不加-q参数 显示压缩过程
zip -r test.zip test
adding: test/ (stored 0%)
adding: test/data_202107.txt (deflated 76%)
adding: test/data_202105.txt (deflated 76%)
adding: test/data_202106.txt (deflated 76%)
# 添加-q参数 安静模式输出 不显示压缩过程
zip -q -r test.zip test
- 压缩文件
# 压缩多个文件
# 因为压缩的全是文件,所以可以不用加上 -r 选项
zip -q rusult.zip data.txt data2.txt data3.txt
- 压缩文件和目录
zip -q -r result.zip data.txt test
- 排除文件
zip -r result.zip test -x "./test/data2.txt"
2.unzip命令
基本语法:
unzip 参数 压缩文件 (-d 目录) # 不指定目录则解压在当前目录
-c 将解压缩的结果显示到屏幕上(显示每一个目录下的每一个文件的内容),同时对字符做适当的转换,但是并没有解压压缩包
-l 显示压缩文件内所包含的文件
-t 检查压缩文件是否正确
-v 执行时显示压缩文件的详细信息
-q 安静模式,执行时不显示任何信息
-d 指定文件解压后存储的目录
-x 指定不要处理压缩文件中的那些文件
- 显示解压缩结果
# 具体会显示到每一个文件跟每一个文件的内容
# 慎用!!!滚屏!!!
unzip -c test.zip
- 显示包含的文件
unzip -l test.zip
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
0 09-09-2021 20:35 test/
395704334 09-09-2021 18:20 test/data_202107.txt
460339131 09-09-2021 18:20 test/data_202105.txt
400373218 09-09-2021 18:20 test/data_202106.txt
--------- -------
1256416683 4 files
- 检查压缩文件是否正确
unzip -t test.zip
Archive: test.zip
testing: test/ OK
testing: test/data_202107.txt OK
testing: test/data_202105.txt OK
testing: test/data_202106.txt OK
No errors detected in compressed data of test.zip.
全部OK表示全部文件都是正确的。
- 不解压文件 查看压缩包内容(查看文件列表以及压缩率)
# 使用 -v 显示的信息比使用 -l 显示的信息更加详细
unzip -v test.zip
Archive: test.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
0 Stored 0 0% 09-09-2021 20:35 00000000 test/
395704334 Defl:N 94419298 76% 09-09-2021 18:20 128cfa97 test/data_202107.txt
460339131 Defl:N 109389109 76% 09-09-2021 18:20 cba661a9 test/data_202105.txt
400373218 Defl:N 94776009 76% 09-09-2021 18:20 4314b973 test/data_202106.txt
-------- ------- --- -------
1256416683 298584416 76% 4 files
- 指定目录解压
# 查看
unzip -l test.zip
# 解压
unzip -q test.zip -d /data/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)