一.引言
使用 linux 工作中经常遇到 zip,gz,tar 相关的压缩文件,下面整理下几种压缩文件的常用方法。
后续示例将基于 TestDir 展开,其中包含一个名为 123 的文件,除此之外还有一个名为的 234 文件
编辑
二.zip
ZIP 文件格式一种数据压缩和文档储存的文件格式,原名Deflate,通常使用后缀名“.zip”ZIP,是一种相当简单的分别压缩每个文件的存档格式。
1.压缩 zip
A.相同路径下 文件、文件夹 压缩
zip -r testDir.zip ~/Desktop/TestDir
-r 代表 递归压缩子目录下所有文件,后面的两个参数分别代表待生成 xxx.zip 的名称与待压缩目录/文件地址,上述命令会将 TestDir 下所有文件、文件夹压缩至 testDir.zip 中
编辑
B.不同路径下 文件、文件夹压缩
zip -r testDir.zip ~/Desktop/TestDir ~/Desktop/234
将 TestDir 下所有内容和 234 文件同时压缩到 testDir.zip 中
编辑
压缩后在原基础上得到新的 .zip 文件
编辑
2.向 .zip 文件添加、删除
zip 可以轻松的添加与删除也得益于其采用分别压缩每个文件的方式进行压缩
A.添加
新建一个 345 文件,将该文件添加至上面生成的 testDir.zip 中
zip -m testDir.zip 345
编辑
B.删除
将 345 文件从 testDir.zip 中删除
zip -d testDir.zip 345
编辑
3.解压 zip
unzip -d ddd testDir.zip
将 testDir.zip 解压到 ddd 文件夹下,-d 参数表示压缩后显示生成文件完整路劲
编辑
4.其他参数
编辑
下面是一些常用的 zip 指令:
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。 -l 显示压缩文件内所包含的文件。 -v 执行是时显示详细的信息。 -a 对文本文件进行必要的字符转换。 -b 不要对文本文件进行字符转换。 -C 压缩文件中的文件名称区分大小写。 -j 不处理压缩文件中原有的目录路径。 -L 将压缩文件中的全部文件名改为小写。 -n 解压缩时不要覆盖原有的文件。 -o 不必先询问用户,unzip执行后覆盖原有文件。 -P<密码> 使用zip的密码选项。 -q 执行时不显示任何信息。 -s 将文件名中的空白字符转换为底线字符。 -V 保留VMS的文件版本信息。 -X 解压缩时同时回存文件原来的UID/GID。
5.简易压缩、解压 zip
A.压缩
直接右键选择压缩 xxx 文件即可得到 xxx.zip 文件
编辑
B.解压缩
直接双击对应 .zip 文件即可实现解压
三.gz
gz文件是一种压缩文件,以 .gz 或者 .tar.gz(.tgz)为扩展名,多见于 Linux、UNIX,与 zip 不同,gz 只能压缩文件,而不能压缩文件夹
1.压缩 gz
gzip testDir
直接压缩文件夹会提示下述信息 ❌ :
编辑
A.压缩-不保留源文件
gzip testDir/123
执行命令后目录下的 123 文件变为 123.gz
编辑
B.压缩-保留源文件
如果想要保留源文件,可以采用数据流的形式进行压缩,-c 代表将解压后的文件输出到标准输出:
gzip -c testDir/123 > TestDir/123.gz
执行后 123 文件保留,并生成 123.gz
编辑
2.解压 gz
A.解压-不保留原gz
gunzip TestDir/123.gz
编辑
B.解压-保留原gz
gunzip -c testDir/123.gz > TestDir/123
编辑
3.常用参数
除了使用 -c 保留源文件外,也可以使用 -r 递归将文件夹下文件都处理为 gz:
-a:使用ASCII文字模式。 -c:把解压后的文件输出到标准输出设备。 -f:强行解开压缩文件。 -l:列出压缩文件的相关信息。 -L:显示版本与版权信息。 -n:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理。 -N:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。 -q:不显示警告信息。 -r:递归处理,将指定目录下的所有文件及子目录一并处理。 -S:更改压缩字尾字符串。 -t:测试压缩文件是否正确无误。 -v:显示指令执行过程。 -V:显示版本信息。
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
编辑
执行命令后将 testDir 内的文件合并至 tar
编辑
B.tar.gz
tar zcvf test.tar.gz testDir
编辑
执行后生成 test.tar.gz 文件,注意 tar 文件只是将多个文件合并,其本身不具备压缩功能,需结合其他压缩方式对 tar 文件进行压缩
编辑
2.解压 tar
A.tar
tar xzvf test.tar -C ddd
编辑
适应 xzvf + -C 实现标准输出,将 tar 文件解压到 ddd 文件夹中,注意这里使用 -C 而不是 -c
编辑
B.tar.gz
tar zxvf test.tar.gz -C dddd
编辑
将 tar.gz 文件解压到 dddd 文件夹下
编辑
3.其他参数
-c:新建打包文件,同 -v 一起使用 查看过程中打包文件名 -x:解压文件,-C 解压到对应的文件目录。 -f:后面接要处理的文件 -j:通过bzip2方式压缩或解压,最后以.tar.br2 为后缀。压缩后大小小于.tar.gz -z:通过gzip方式压缩或解压,最后以.tar.gz 为后缀 -v:压缩或解压过程中,显示出来过程 -t:查看打包文件中内容,重点文件名 -u:更新压缩文件中的内容。 -p:保留绝对路径,即允许备份数据中含有根目录 -P:保留数据原来权限及属性。 --exclude =FILE 压缩过程中,不要讲FILE打包
tar 主要有以下参数,其中 -c 代表打包,-x 代表解压缩包,以打包 tar 的 tar czvf 为例:
c - 新建打包文件 z - 以 .tar.gz 结尾 v - 显示压缩过程 -f 要处理的文件
4.常规解压
不管是 tar 还是 tar.gz,MacOS 下都支持双击直接解压相关文件
编辑
五.rar
RAR是一种文件压缩与归档的私有文件格式,用于数据压缩与归档打包,简单的说就是将原有的文件数据经过压缩处理之后保存为RAR文件格式后缀名,通常在 Win 环境下,适配为 WinRAR。zip、gz、tar MacOS 原始都支持,由于 rar 多用于 Win,所以 mac 上使用 rar 需要先安装。
1.安装 rar
A.获取源文件
链接:https://pan.baidu.com/s/1ZG9Wk0pO7FebH1TH57meJw 密码:fojn
编辑
根据自己的电脑版本选择 arm 或者 x64 版本的压缩包并解压得到下述文件:
编辑
B.安装 rar、unrar
cd 到上述目录的地址依次执行:
sudo install -c -o $USER rar /usr/local/bin sudo install -c -o $USER unrar /usr/local/bin
执行后在命令行输入 rar 或者 unrar,如果有下述显示则代表安装成功:
编辑
2.压缩 rar
rar a testDir.rar testDir
将 testDir 文件夹压缩为 rar 格式
编辑
编辑
3.解压 rar
unrar x testDir.rar
编辑
解压后源文件保留,并得到解压后的 testDir 文件
编辑
六.总结
上面一次性介绍了 zip、gz、tar、rar 四种文件的压缩方式,下面简单测试下它们的压缩性能,这里找来一个 131 kb 的文件测试一下:
编辑
# zip zip -r testFile.zip testFile # gz gzip testFile # tar tar czvf testFile.tar testFile # rar rar a testFile.rar testFile
执行命令后得到下述4中压缩文件:
编辑
格式 | file | zip | gz | tar | rar |
大小(byte) | 94671 | 11185 | 11071 | 11355 | 10407 |
简单测试了下压缩效率相近,最节省空间的是 rar,由于日常生活中几种压缩格式主要用于办公文件,因此也不做过多区分。