打包格式介绍

*.rar rar程序压缩的文件
*.7z 7zip程序压缩的文件
*.tar tar程序打包,为压缩的文件
*.gz gzip程序(GNU zip)压缩的文件
*.xz xz程序压缩的文件
*.bz2 bzip2程序压缩的文件
*.tar.gz tar打包,gzip程序压缩的文件
*.tar.xz tar打包,xz程序压缩的文件
*.tar.bz2 tar打包,bzip2程序压缩的文件
*.tar.7z tar打包,7z程序压缩的文件

1.zip

1.1zip压缩文件

我们先查看一下文件
截图录屏_选择区域_20191231195855.png
在这里,有些人会产生一些疑问,为什么我这两个程序包为什么都只有4kb?这里就涉及到之前讲过的一个概念,linux下一切皆文件。这两个文件夹也是文件,所以我们通过ls查看的事后,统计的大小都是文件夹本身的大小,而非文件夹中包含文件的大小。
如果我们要查看整个文件夹及其包含内容的大小,可以使用du命令查看。

截图录屏_选择区域_20191231200233.png
参数:
-s 递归统计,计算文件夹下所有内容的大小
-h 人性化输出,默认输出单位为字节

现在,我们打算把Goland-2019.3.1这个文件夹用zip进行打包

先了解一下zip命令的基本用法
参数:
-r 递归打包,打包该文件夹下的所有内容
-q 安静模式,打包后,不显示任何信息
-o 表示输出文件,后面跟的就是被打包后的文件名
-级别 1-9级,9级打包速度最慢,文件最小,1级压缩最快,文件最大
![截图录屏
选择区域20191231201540.png](https://cdn.nlark.com/yuque/0/2019/png/197026/1577794548590-a44ad2b0-20fc-43f4-a77d-7f26eb8c23e6.png#align=left&display=inline&height=55&name=%E6%88%AA%E5%9B%BE%E5%BD%95%E5%B1%8F%E9%80%89%E6%8B%A9%E5%8C%BA%E5%9F%9F_20191231201540.png&originHeight=55&originWidth=1018&size=12563&status=done&style=none&width=1018)

这样,我们就把一个794m的文件压缩打包成了351m

此外,我们还可以设置压缩的级别。
我们在把这个文件用1级和9级进行压缩,并查看源文件,默认压缩,1级压缩,9级压缩的大小。
使用du命令进行查看。
截图录屏_选择区域_20191231203133.png

  1. du -h -d 0 Go*

-h 为人性化输出
-d 0 为文件深度0,默认会进行全盘搜索
截图录屏_选择区域_20191231203316.png

由于zip格式,windows系统和linux系统在文本文件格式上有一些兼容性问题。比如换行符(为不可见字符),在windows为CR+LF:回车加换行,而在linux上为LF:换行,所以如果在不加处理的情况下,在linux上编辑的文本,在windows下打开,可能看起来是没有换行的。如果要解决这个问题,在linux下创建zip压缩包的事后加上-l参数即可。

-l 参数即为,把LF转换为CR+LF。

zip还可以使用-e参数,创建加密压缩包。详情可以自行查找。

1.2unzip解压缩

  1. #安静模式unzip解压到当前目录
  2. unzip GoLand-2019.3.1.zip
  1. #安静模式解压到指定目录,如果没有ziptest目录,将会自动创建
  2. unzip -q GoLand-2019.3.1.zip -d ziptest
  1. #如果你并不想解压这个文件,而只是想看看这个文件里有什么东西,可以使用-l参数
  2. unzip -l GoLand-2019.3.1.zip

同样的,使用unzip解压文件时,我们也要注意兼容性问题,不过这里的兼容性问题并不是上面提到的换行符问题,而是中文编码问题,通常windows系统上面创建的压缩文件,如果有包含中文的文档或者中文命名的文件夹,系统会自动默认采用GBK编码或其他适配的编码而在linux上默认采用的是utf-8编码,如果不加任何处理,直接解压出来可能会出现中文乱码的问题(有时候它会自动帮你解决),为了解决这个问题,我们可以在解压时,指定编码类型。
使用大写的O参数。

  1. unzip-O GBK 中文压缩文件名.zip

2.tar

在linux上,更常用的其实是tar工具,tar原本只是个打包工具,只是同时还实现了对7z,gzip,xz,bzip2等工具的支持,这些压缩工具本身只能实现对文件或目录(单独压缩目录中的文件)的压缩,没有实现对文件的打包压缩,所我们也无需在单独学习其他工具,tar的解压和压缩透视同一个命令,只是使用的参数不同,所以使用起来也更为方便一些。

2.1tar仅打包,不压缩

  1. tar -P -cf GoLand-2019.3.1.tar /home/compton/appplication/GoLand-2019.3.1

参数:
-P 保留绝对路径
-c 创建一个tar文件
-f 指定创建的文件名,-f后必须跟指定的文件名。

注意:
指定的文件名必须写在-f后

  1. #可以写为:
  2. tar -P -f GoLand-2019.3.1.tar /home/compton/appplication/GoLand-2019.3.1 -c
  3. #不能写为:
  4. tar -P -fc GoLand-2019.3.1.tar /home/compton/appplication/GoLand-2019.3.1

2.2tar解包

  1. #解包至一个已存在的目录tardir
  2. tar -xf GoLand-2019.3.1.tar -C tardir

参数:
-x tar的解包参数
-t 仅查看,不解包

2.3tar压缩

2.3.1打包并压缩(gz)

如果想要使用gzip压缩成tar.gz格式,只需要选用参数-z

  1. tar -czf GoLand-2019.3.1.tar.gz /home/compton/appplication/GoLand-2019.3.1

2.3.2解压

  1. tar -xzf GoLand-2019.3.1.tar.gz

至于其他格式,也只需要更换参数即可。
参数:
-z tar.gz
-J tar.xz
-j tar.bz2

更多参数,参阅man文档。

练习:

创建一个123文件,分别用zip和tar进行压缩,并解压缩。

  1. touch 123
  2. zip -q -o 123.zip 123
  3. tar -czf 123.tar.gz 123
  4. unzip -q 123.zip -d ziptest
  5. mkdir tardir
  6. tar -xzf 123.tar.gz -C tardir

tree查看这个目录
截图录屏_选择区域_20191231220007.png