文件压缩与解压
1、tar命令
tar命令可以为Linux的文件和目录创建档案。
利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁盘上
创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录打包成一个文件,这对于备份文件或将几个文件组合成一个文件以便于传输是非常有用
的。
首先要弄清楚两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
区分这两个概念的原因:源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包,然后再用压缩程序进行压缩
(gzip bzip2命令)。
语法
tar(选项)(参数)
选项
-A 新增文件到已存在的备份文件;
-B 设置区块大小
-c 建立新的备份文件
-C <目录> :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-d :记录文件的差别
-x :从备份文件中还原文件。
-t :列出备份文件中的内容
-z :通过gzip指令处理备份文件;
-Z :通过compress指令处理备份文件;
-f :指定备份文件;
-v :显示指令执行过程;
-r :添加文件到已经压缩的文件;
-u :添加改变了和现有的文件到已经存在的压缩文件;
-j :支持bzip2解压文件;
-v :显示操作过程;
-l :文件系统边界设置
-k :保留原有文件不覆盖
-m :保留文件不被覆盖
-w :确认压缩文件的正确性
-p :用原来的文件权限还原文件
-N :只将较指定日期更新的文件保存在备份文件里;
参数
文件或目录:指定要打包的文件或目录列表
实例
将文件全部打成tar包:
tar -cvf log.tar log2012.log //仅打包,不压缩!
tar -zcvf log.tar.gz log2013.log //打包后,已gzip压缩
tar -jcvf log.tar.bz2 log2012.log //打包后,以bzip2压缩
在选项f之后的文档名是自己取的,我们习惯上都用.tar来作为标识,如果加z选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包
如果加j选项,则以.tar.bz2来作为tar包名。
查阅上述tar包内有哪些文件:
tar -ztvf log.tar.gz
由于我们使用gzip压缩的log.tar.gz,所以要查阅log.tar.gz包内文件时,就得要加上z这个选项了。
将tar解压缩
tar -zxvf log.tar.gz
只将tar包内的部分文件解压出来
tar -zxvf log.tar.gz log2013.log
我们可以透过tar -ztvf来查阅tar包内的文件名称,如果只要一个文件,就可以透过这个方式来解压部分文件!
2016/12/15
2、zip命令
zip命令可以用来解压缩文件,或者对文件打包操作。
zip是一个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。
语法
zip(选项)(参数)
选项
-A:调整可执行的自动解压缩文件;
-b<工作目录>: 指定暂时存放文件的目录;
-c :替每一个压缩的文件加上注释;
-d:从压缩文件中删除指定的文件;
-D:压缩文件内不建立目录名称;
-u:更换较新的文件到压缩文件内;
-f:与-u参数类似,但不仅更新既有文件,如果某些文件原本不存在压缩文件中,使用本参数会将其加入压缩文件中。
-F:尝试修复已损坏的压缩文件;
-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;
-h:在线帮助
-i<范本样式>:只压缩符合条件的文件;
-j:只保存文件名称及其内容,而不存放任何目录名称;
-J:删除压缩文件前面不必要的数据
-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移动到压缩文件中;
-n<字尾子符串>:不压缩具有特定字尾字符串的文件;
-o:以压缩文件内拥有最新更改时间为准,将压缩文件的更改时间设成和文件相同;
-q:不显示指令的执行过程;
-r:递归处理,将指定目录下的所有文件和子目录一并处理;
-S:包含系统和隐藏文件;
-t<日期时间>:把压缩文件的日期设成指定的日期;
-v:显示指令过程或者版本信息;
-x<范本格式> 压缩时排除符合条件的文件;
-X:不保存额外的文件属性;
-z:为压缩文件加上注释;
参数
zip压缩包:指定要创建的zip压缩包;
文件列表:指定要压缩的文件列表;
实例
将/gllong/tes目录下的所有文件和文件夹进行打包
zip -q -r html.zip /home/tes
如果在gllong目录下
执行 zip -q -r html.zip tes 可以达到同样的效果
也可以使用 zip -r -q html.zip *
10 3、unzip命令
unzip命令,用于解压缩由zip命令压缩的".zip"压缩包。
语法
unzip(选项)(参数)
参数
压缩包:指定要解压缩的.zip压缩包。
实例
将压缩文件text.zip 在当前目录下解压缩
unzip text.zip
将压缩文件text.zip在指定目录/usr下解压缩,如果已存在有相同的文件存在,要求unzip命令不覆盖原先的文件。
unzip -n test.zip -d /usr
查看压缩文件目录,但不解压。
unzip -v test.zip
将压缩文件text.zip在指定目录/usr下解压缩,如果已存在有相同的文件存在,要求unzip命令覆盖原先的文件。
unzip -o test.zip -d /usr
4、gzip命令
gizp命令用来压缩文件。
gzip是一个广泛的压缩程序,文件经它压缩后,其名称后面会多处".gz"扩展名。
gzip是在Linux中经常使用的对文件压缩和解压缩的命令,既方便又好用。gzip命令不仅可以用来压缩大的,较少使用的文件以节省磁盘空间,
还可以和tar命令一起构成Linux系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%-70%的压缩率。减少文件大小有两个
明显的好处,减少存储空间的占用,网络传输文件时,可以减少传输时间。
语法
gzip(选项)(参数)
参数
文件列表:指定要压缩的文件列表。
实例
他test5目录下的文件压缩成.gz格式文件
gzip *
把上列中的每个压缩文件解压缩,并列出详细的信息
gzip -dv *
显示每个压缩的文件信息,但不解压
gzip -l *
压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz
gzip -r log.tar
进行递归的压缩目录
gzip -rv test5
递归的解压缩目录
gzip -dr test5
5、gunzip命令
gunzip命令用来解压缩文件。gunzip是个使用广泛的压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。事实上gunzip就是
gzip的硬连接,因此不论是压缩或是解压缩,都可通过gzip指令独立完成。
语法
gunzip(选项)(参数)
选项
-a或——ascii:使用ASCII文字模式;
-c或--stdout或--to-stdout:把解压后的文件输出到标准输出设备;
-f或-force:强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
-h或——help:在线帮助; -l或——list:列出压缩文件的相关信息;
-L或——license:显示版本与版权信息;
-n或--no-name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理;
-N或——name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上;
-q或——quiet:不显示警告信息;
-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;
-t或——test:测试压缩文件是否正确无误;
-v或——verbose:显示指令执行过程;
-V或——version:显示版本信息;
参数
文件列表:指定要解压缩的压缩包。
实例
首先,将/etc目录下的所有文件以及子目录进行压缩,备份压缩包etc.zip到/opt目录,然后对etc.zip文件进行gzip压缩,设置gzip压缩级别为9。
zip -r /opt/etc.zip /etc
gzip -9v /opt/etc.zip
查看上述etc.zip.gz文件的压缩信息
gzip -l /opt/etc.zip.gz
解压上述etc.zip.gz文件到当前目录。
gzip -d /opt/etc.zip.gz
或者执行
gunzip /opt/etc.zip.gz
即gzip -d 等价于 gunzip命令。