Linux系统:文件压缩(gzip/bzip2/xz/zip)与打包(tar)命令

目录

一、常用的压缩命令

1、gzip/gunzip

2、bzip2/bunzip2

3、xz

二、打包指令tar

三、不太常用的压缩命令:zip/unzip


一、常用的压缩命令

在Windows系统中,我们就经常会使用到WinRAR这个软件,WinRAR是一款功能强大的压缩包管理器。压缩的原理是把文件的二进制代码压缩,把相邻的0,1代码减少,比如有000000,可以把它变成 6 个 0 的写法60,来减少该文件的空间。

而想到得到原文件,必须将它还原会原来的样子,即解压缩技术。压缩后与压缩前所占的空间大小之比称为压缩比。

1、gzip/gunzip

命令原意:gnu zip
命令路径:/bin/gzip
执行权限:所有用户
压缩后文件格式:.gz
语法:gzip [选项] [文件];值得注意的是:gzip不能压缩目录!
常用选项:

  • -v :可以显示压缩比,文件名等信息
  • -# :#为数字,代表压缩等级,-1 压缩效率最高,压缩比最高;-9 压缩效率最低,压缩比最低!默认是 -6
  • -d :解压缩参数;可以代替 gunzip 进行解压缩
  • -c :将压缩的过程产生的数据显示出来;gzip对文件压缩后,产生一个.gz的压缩文件,不保留原文件。但可以通过-c将压缩产生的数据重定向到一个文件中,模拟"保存原文件压缩"

现有一个大小为628k的文件,我们对它进行一系列操作。

下面我们来测试下各个参数

eg1:不带任何参数地压缩文件

eg2:-d & -v 解压并显示压缩信息

eg3:-# 指定压缩等级

eg4:通过-c实现保留原文件

 

2、bzip2/bunzip2

命令路径:/usr/bin/bzip2
执行权限:所有用户                               
压缩后文件格式:.bz2
语法:bzip2 [选项] [文件]
常用选项:

  • -v :同gzip。可以显示压缩比,文件名等信息
  • -# :同gzip。#为数字,代表压缩等级,-1 压缩效率最高,压缩比最高;-9 压缩效率最低,压缩比最低!默认是 -6
  • -d :同gzip。解压缩参数
  • -c :同gzip。将压缩的过程产生的数据显示出来
  • -k :压缩后,保留源文件

eg

可见,大部分操作还是与gzip类似的。但是在算法上,bzip2更突出一些,压缩后的文件占的空间更小了。不过,仍是有代价的,那就是在压缩时间上,可能会更久一些。

另外-k参数算是对-c的优化吧

 

3、xz

命令路径:/usr/bin/xz
执行权限:所有用户                               
压缩后文件格式:.xz
语法:xz [选项] [文件]
常用选项:

  • -v  :可以显示压缩比,文件名等信息
  • -#  :#为数字,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6
  • -d  :解压缩参数
  • -c  :将压缩的过程产生的数据显示出来
  • -k  : 压缩后,保留源文件

总体来说与gzip,bzip2相似

但是我们可以通过time命令比较下三者的压缩时间

可见,对同一文件使用同一压缩等级压缩,大致存在这样的关系(并不绝对):

压缩时间 gzip<bzip2<xs

压缩比例

(原文件-压缩文件)/原文件 

gzip<bzip2<xs

压缩比

压缩文件/原文件

gzip>bzip2>xs

二、打包指令tar

上面三个压缩命令都只能对文件进行压缩,虽然可以指定目录,但是实际上还是将目录内的文件进行分别压缩。

在windows系统中的像WinRAR这类的压缩软件可以把多个文件压缩成一个文件。类似的,Linux系统中用tar命令进行打包,打包可以理解为将多个文件或目录打包成一个文件的。

tar指令不仅将多个文件或目录进行打包,还可以通过压缩命令来对打包后的文件进行压缩。

命令名称:tar 
命令路径:/bin/tar
执行权限:所有用户
语法:tar  [选项]  [目录]
常用选项:

  • -c  : 创建打包文档,可以使用-v来查看过程中被打包的文件名。
  • -v  : 在压缩/解压缩过程中,显示正在被处理的文件或目录名。      
  • -z  : 通过gzip指令进行压缩或解压缩,此时最好命名为*.tar.gz。
  • -j   : 通过bzip2指令进行压缩或解压缩,此时最好命名为*.tar.bz2。
  • -J  : 通过xz指令对进行压缩或解压缩,此时最好命令为*.tar.xz。
  • -x  :用于解包或解压缩,可以使用-C配合解到特定目录下。
  • -C :  用于指定解压缩到特定目录下。 格式: -C  path
  • -t   :用于查看打包文档内有哪些文件名。
  • -f   : 在打包或解包时用于指定要处理的文档名称。建议单独一项,避免忘记。格式:-f   filename
  • -p  :保留文件的原本权限和属性,常用于备份文件

参数c不能与x同时使用!同时打包又解包是不允许的。

eg1:将/etc目录(内含子目录以及文件)进行打包并压缩到当前目录里  (切换root身份)

eg2:同时解包,解压缩

其实这个过程就相当于先解压后解包,注意一定是先解压的!因为etc.tar.gz是一个压缩文件,解压后得到打包文档etc.tar,然后解包得到etc。

eg3:配合more指令,查看压缩文档里的文件名 

eg4:将文档里的单一文件解压出来

三、不太常用的压缩命令:zip/unzip

zip是Windows系统中常用的压缩文件格式,linux下也提供这个命令的用法。

压缩命令:zip
命令路径:/usr/bin/zip
执行权限:所有用户
压缩后文件格式:.zip  (可以任意,但最好用这个作为标识)
语法:zip [选项] [压缩后文件名称] [原文件或目录]
常用选项:

  • -v : 显示压缩数据
  • -r : 压缩目录必选项

zip压缩指令可以对文件或目录进行压缩!

eg1:压缩文件

eg2:压缩目录

unzip自然就是解压咯

压缩命令:unzip
命令路径:/usr/bin/unzip
执行权限:所有用户
语法:unzip [压缩文件名称] [-d 路径]

eg:

猜你喜欢

转载自blog.csdn.net/qq_39192827/article/details/86081114