Shell - 常用压缩文件处理 zip、gz、tar、rar

简介: 使用 linux 工作中经常遇到 zip,gz,tar 相关的压缩文件,下面整理下几种压缩文件的常用方法。

一.引言

使用 linux 工作中经常遇到 zip,gz,tar 相关的压缩文件,下面整理下几种压缩文件的常用方法。

后续示例将基于 TestDir 展开,其中包含一个名为 123 的文件,除此之外还有一个名为的 234 文件

image.gif编辑

二.zip

ZIP 文件格式一种数据压缩和文档储存的文件格式,原名Deflate,通常使用后缀名“.zip”ZIP,是一种相当简单的分别压缩每个文件的存档格式。

1.压缩 zip

A.相同路径下 文件、文件夹 压缩

zip -r testDir.zip ~/Desktop/TestDir

image.gif

-r 代表 递归压缩子目录下所有文件,后面的两个参数分别代表待生成 xxx.zip 的名称与待压缩目录/文件地址,上述命令会将 TestDir 下所有文件、文件夹压缩至 testDir.zip 中

image.gif编辑

B.不同路径下 文件、文件夹压缩

zip -r testDir.zip ~/Desktop/TestDir ~/Desktop/234

image.gif

将 TestDir 下所有内容和 234 文件同时压缩到 testDir.zip 中

image.gif编辑

压缩后在原基础上得到新的 .zip 文件

image.gif编辑

2.向 .zip 文件添加、删除

zip 可以轻松的添加与删除也得益于其采用分别压缩每个文件的方式进行压缩

A.添加

新建一个 345 文件,将该文件添加至上面生成的 testDir.zip 中

zip -m testDir.zip 345

image.gif

image.gif编辑

B.删除

将 345 文件从 testDir.zip 中删除

zip -d testDir.zip 345

image.gif

image.gif编辑

3.解压 zip

unzip -d ddd testDir.zip

image.gif

将 testDir.zip 解压到 ddd 文件夹下,-d 参数表示压缩后显示生成文件完整路劲

image.gif编辑

4.其他参数

image.gif编辑

下面是一些常用的 zip 指令:

-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-l 显示压缩文件内所包含的文件。
-v 执行是时显示详细的信息。
-a 对文本文件进行必要的字符转换。
-b 不要对文本文件进行字符转换。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中原有的目录路径。
-L 将压缩文件中的全部文件名改为小写。
-n 解压缩时不要覆盖原有的文件。
-o 不必先询问用户,unzip执行后覆盖原有文件。
-P<密码> 使用zip的密码选项。
-q 执行时不显示任何信息。
-s 将文件名中的空白字符转换为底线字符。
-V 保留VMS的文件版本信息。
-X 解压缩时同时回存文件原来的UID/GID。

image.gif

5.简易压缩、解压 zip

A.压缩

直接右键选择压缩 xxx 文件即可得到 xxx.zip 文件

image.gif编辑

B.解压缩

直接双击对应 .zip 文件即可实现解压

三.gz

gz文件是一种压缩文件,以 .gz 或者 .tar.gz(.tgz)为扩展名,多见于 Linux、UNIX,与 zip 不同,gz 只能压缩文件,而不能压缩文件夹

1.压缩 gz

gzip testDir

image.gif

直接压缩文件夹会提示下述信息 ❌ :

image.gif编辑

A.压缩-不保留源文件

gzip testDir/123

image.gif

执行命令后目录下的 123 文件变为 123.gz

image.gif编辑

B.压缩-保留源文件

如果想要保留源文件,可以采用数据流的形式进行压缩,-c 代表将解压后的文件输出到标准输出:

gzip -c testDir/123 > TestDir/123.gz

image.gif

执行后 123 文件保留,并生成 123.gz

image.gif编辑

2.解压 gz

A.解压-不保留原gz

gunzip TestDir/123.gz

image.gif

image.gif编辑

B.解压-保留原gz

gunzip -c testDir/123.gz > TestDir/123

image.gif

image.gif编辑

3.常用参数

除了使用 -c 保留源文件外,也可以使用 -r 递归将文件夹下文件都处理为 gz:

-a:使用ASCII文字模式。
-c:把解压后的文件输出到标准输出设备。
-f:强行解开压缩文件。
-l:列出压缩文件的相关信息。
-L:显示版本与版权信息。
-n:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理。
-N:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。
-q:不显示警告信息。
-r:递归处理,将指定目录下的所有文件及子目录一并处理。
-S:更改压缩字尾字符串。
-t:测试压缩文件是否正确无误。
-v:显示指令执行过程。
-V:显示版本信息。

image.gif

4.常规解压

MacOS 下直接双击 .gz 文件即可解压对应 .gz 文件

四.tar

tar是 Unix 和 类 Unix 系统上文件打包工具,可以将多个文件合并为一个文件,打包后的文件名亦为“tar”。tar 代表未被压缩的tar文件。已被压缩的tar文件则追加压缩文件的扩展名,如经过gzip压缩后的tar文件,扩展名为“.tar.gz”,所以经常使用 tar 将文件夹下多个文件合并再使用 gz 压缩,这样就解决了 gz 不能压缩文件夹的问题,但是解压也需要先得到 tar,再将 tar 拆分。

1.生成 tar

A.tar

tar czvf test.tar ./testDir

image.gif

image.gif编辑

执行命令后将 testDir 内的文件合并至 tar

image.gif编辑

B.tar.gz

tar zcvf test.tar.gz testDir

image.gif

image.gif编辑

执行后生成 test.tar.gz 文件,注意 tar 文件只是将多个文件合并,其本身不具备压缩功能,需结合其他压缩方式对 tar 文件进行压缩

image.gif编辑

2.解压 tar

A.tar

tar xzvf test.tar -C ddd

image.gif

image.gif编辑

适应 xzvf + -C 实现标准输出,将 tar 文件解压到 ddd 文件夹中,注意这里使用 -C 而不是 -c

image.gif编辑

B.tar.gz

tar zxvf test.tar.gz -C dddd

image.gif

image.gif编辑

将 tar.gz 文件解压到 dddd 文件夹下

image.gif编辑

3.其他参数

-c:新建打包文件,同 -v 一起使用 查看过程中打包文件名
-x:解压文件,-C 解压到对应的文件目录。
-f:后面接要处理的文件
-j:通过bzip2方式压缩或解压,最后以.tar.br2 为后缀。压缩后大小小于.tar.gz
-z:通过gzip方式压缩或解压,最后以.tar.gz 为后缀
-v:压缩或解压过程中,显示出来过程
-t:查看打包文件中内容,重点文件名
-u:更新压缩文件中的内容。
-p:保留绝对路径,即允许备份数据中含有根目录
-P:保留数据原来权限及属性。
--exclude =FILE 压缩过程中,不要讲FILE打包

image.gif

tar 主要有以下参数,其中 -c 代表打包,-x 代表解压缩包,以打包 tar 的 tar czvf 为例:

c - 新建打包文件 z - 以 .tar.gz 结尾 v - 显示压缩过程 -f 要处理的文件

4.常规解压

不管是 tar 还是 tar.gz,MacOS 下都支持双击直接解压相关文件

image.gif编辑

五.rar

RAR是一种文件压缩与归档的私有文件格式,用于数据压缩与归档打包,简单的说就是将原有的文件数据经过压缩处理之后保存为RAR文件格式后缀名,通常在 Win 环境下,适配为 WinRAR。zip、gz、tar MacOS 原始都支持,由于 rar 多用于 Win,所以 mac 上使用 rar 需要先安装。

1.安装 rar

A.获取源文件

链接:https://pan.baidu.com/s/1ZG9Wk0pO7FebH1TH57meJw  密码:fojn

image.gif编辑

根据自己的电脑版本选择 arm 或者 x64 版本的压缩包并解压得到下述文件:

image.gif编辑

B.安装 rar、unrar

cd 到上述目录的地址依次执行:

sudo install -c -o $USER rar /usr/local/bin
sudo install -c -o $USER unrar /usr/local/bin

image.gif

执行后在命令行输入 rar 或者 unrar,如果有下述显示则代表安装成功:

image.gif编辑

2.压缩 rar

rar a testDir.rar testDir

image.gif

将 testDir 文件夹压缩为 rar 格式

image.gif编辑

image.gif编辑

3.解压 rar

unrar x testDir.rar

image.gif

image.gif编辑

解压后源文件保留,并得到解压后的 testDir 文件

image.gif编辑

六.总结

上面一次性介绍了 zip、gz、tar、rar 四种文件的压缩方式,下面简单测试下它们的压缩性能,这里找来一个 131 kb 的文件测试一下:

image.gif编辑

# zip
zip -r testFile.zip testFile
# gz
gzip testFile
# tar
tar czvf testFile.tar testFile
# rar
rar a testFile.rar testFile

image.gif

执行命令后得到下述4中压缩文件:

image.gif编辑

格式 file zip gz tar rar
大小(byte) 94671 11185 11071 11355 10407

简单测试了下压缩效率相近,最节省空间的是 rar,由于日常生活中几种压缩格式主要用于办公文件,因此也不做过多区分。

目录
相关文章
|
7月前
|
Shell Linux API
【Shell 命令集合 备份压缩 】Linux 解压缩文件 unzip命令 使用指南
【Shell 命令集合 备份压缩 】Linux 解压缩文件 unzip命令 使用指南
285 0
|
7月前
|
算法 Shell Linux
【Shell 命令集合 备份压缩 】Linux 处理lha格式 lha命令 使用指南
【Shell 命令集合 备份压缩 】Linux 处理lha格式 lha命令 使用指南
87 0
|
7月前
|
存储 监控 Shell
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
112 0
|
7月前
|
Shell Linux 编译器
【Shell 命令集合 备份压缩 】Linux 提取zip压缩文件的详细信息 zipinfo命令 使用指南
【Shell 命令集合 备份压缩 】Linux 提取zip压缩文件的详细信息 zipinfo命令 使用指南
128 0
|
7月前
|
存储 算法 Shell
【Shell 命令集合 备份压缩 】⭐⭐Linux 压缩和归档工具 zip命令 使用指南
【Shell 命令集合 备份压缩 】⭐⭐Linux 压缩和归档工具 zip命令 使用指南
110 0
|
7月前
|
存储 Shell Linux
【Shell 命令集合 备份压缩 】Linux 解码uuencode编码的文件 uudecode 命令 使用指南
【Shell 命令集合 备份压缩 】Linux 解码uuencode编码的文件 uudecode 命令 使用指南
86 0
|
7月前
|
安全 Shell Linux
【Shell 命令集合 备份压缩 】Linux将可执行文件压缩成gzip格式 gzexe命令 使用指南
【Shell 命令集合 备份压缩 】Linux将可执行文件压缩成gzip格式 gzexe命令 使用指南
103 0
|
7月前
|
存储 Shell Linux
【Shell 命令集合 备份压缩 】Linux 恢复由dump命令创建的备份文件 restore命令 使用指南
【Shell 命令集合 备份压缩 】Linux 恢复由dump命令创建的备份文件 restore命令 使用指南
87 0
|
7月前
|
存储 算法 Shell
【Shell 命令集合 备份压缩 】⭐⭐⭐Linux 解压缩gz工具 gzip命令 使用指南
【Shell 命令集合 备份压缩 】⭐⭐⭐Linux 解压缩gz工具 gzip命令 使用指南
92 0
|
7月前
|
存储 Shell Linux
【Shell 命令集合 备份压缩 】Linux 将二进制文件转换为ASCII码 uuencode命令 使用指南
【Shell 命令集合 备份压缩 】Linux 将二进制文件转换为ASCII码 uuencode命令 使用指南
105 0