在Windows系统中,我们就经常会使用到WinRAR这个软件,WinRAR是一款功能强大的压缩包管理器。压缩的原理是把文件的二进制代码压缩,把相邻的0,1代码减少,比如有000000,可以把它变成 6 个 0 的写法60,来减少该文件的空间。
而想到得到原文件,必须将它还原会原来的样子,即解压缩技术。压缩后与压缩前所占的空间大小之比称为压缩比。
命令原意: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实现保留原文件
命令路径:/usr/bin/bzip2
执行权限:所有用户
压缩后文件格式:.bz2
语法:bzip2 [选项] [文件]
常用选项:
- -v :同gzip。可以显示压缩比,文件名等信息
- -# :同gzip。#为数字,代表压缩等级,-1 压缩效率最高,压缩比最高;-9 压缩效率最低,压缩比最低!默认是 -6
- -d :同gzip。解压缩参数
- -c :同gzip。将压缩的过程产生的数据显示出来
- -k :压缩后,保留源文件
eg:
可见,大部分操作还是与gzip类似的。但是在算法上,bzip2更突出一些,压缩后的文件占的空间更小了。不过,仍是有代价的,那就是在压缩时间上,可能会更久一些。
另外-k参数算是对-c的优化吧
命令路径:/usr/bin/xz
执行权限:所有用户
压缩后文件格式:.xz
语法:xz [选项] [文件]
常用选项:
- -v :可以显示压缩比,文件名等信息
- -# :#为数字,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6
- -d :解压缩参数
- -c :将压缩的过程产生的数据显示出来
- -k : 压缩后,保留源文件
总体来说与gzip,bzip2相似
但是我们可以通过time命令比较下三者的压缩时间
可见,对同一文件使用同一压缩等级压缩,大致存在这样的关系(并不绝对):
压缩时间 | gzip<bzip2<xs |
压缩比例 (原文件-压缩文件)/原文件 |
gzip<bzip2<xs |
压缩比 压缩文件/原文件 |
gzip>bzip2>xs |
上面三个压缩命令都只能对文件进行压缩,虽然可以指定目录,但是实际上还是将目录内的文件进行分别压缩。
在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 : 用于指定解压缩到特定目录下。格式: -Cpath
- -t :用于查看打包文档内有哪些文件名。
- -f :在打包或解包时用于指定要处理的文档名称。建议单独一项,避免忘记。格式:-ffilename
- -p :保留文件的原本权限和属性,常用于备份文件
参数c不能与x同时使用!同时打包又解包是不允许的。
eg1:将/etc目录(内含子目录以及文件)进行打包并压缩到当前目录里(切换root身份)
eg2:同时解包,解压缩
其实这个过程就相当于先解压后解包,注意一定是先解压的!因为etc.tar.gz是一个压缩文件,解压后得到打包文档etc.tar,然后解包得到etc。
eg3:配合more指令,查看压缩文档里的文件名
eg4:将文档里的单一文件解压出来
zip是Windows系统中常用的压缩文件格式,linux下也提供这个命令的用法。
压缩命令:zip
命令路径:/usr/bin/zip
执行权限:所有用户
压缩后文件格式:.zip (可以任意,但最好用这个作为标识)
语法:zip [选项] [压缩后文件名称] [原文件或目录]
常用选项:
- -v : 显示压缩数据
- -r : 压缩目录必选项
zip压缩指令可以对文件或目录进行压缩!
eg1:压缩文件
eg2:压缩目录
unzip自然就是解压咯
压缩命令:unzip
命令路径:/usr/bin/unzip
执行权限:所有用户
语法:unzip [压缩文件名称] [-d 路径]
eg: