先讲些简单的概念,因为对于初学者对linux下压缩文件容易搞晕。因为我们常见压缩文件为.zip,.tar.zip,.bzip2,.tar.bz2,.gz,.Z,.tar等等。
首先要理解的是在linux系统存在“打包”和“压缩”两个概念。“打包”只是把一个或多个文档打包放到一个文档中而已,不存在压缩。“压缩”是通过压缩方法将文件压缩更小文件,简单的理解就是通过压缩方法将文件重新编码成占用空间更小的文件(并不是绝对的,对于大文件会更小,但对于很小文件需要记录压缩信息可能会导致压缩后文件更大)。
linux下常用打包命令:tar。为了易读性,一般将文件命名为.tar文件,所以.tar文件并不是压缩文件。
linux下常用压缩命令就很多了,如:zip,gzip,bzip2,compress等。那怎么区分呢?为了易于区分一般通过命名方式来区别。.zip为zip方式压缩文件,.gz为gzip方式压缩文件,.bz2为bzip2压缩文件,.Z为compress压缩文件。所以我们看到.tar.gz文件即为先打包后通过gzip压缩的文件,其他与此类似。
一、zip命令
1,常用参数:
-d:从压缩文件内删除指定的文件。
-g:将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-r:递 归处理,将指定目录下的所有文件和子目录一并处理。
-<压缩效率> 压 缩效率是一个介于1-9的 数值。
2,实例
#将test.txt文件压缩为test.zip文件
#压缩率为1,最高压缩率,当然也是最慢的压缩方法
#压缩率依然为35,因为压缩文件为文本文件压缩率基本不变
#-r递归压缩子目录
#-d 删除已有zip文件中文件
#-m向已有zip文件增加压缩文件
#-x排除制定文件不压缩
二、unzip命令:解压缩命令,即zip反操作命令。
1,常用参数
-t 检查压缩文件是否正确。,但不解压。
-v 执行是时显示详细的信息。或查看压缩文件目录,但不解压。
-n 解压缩时不要覆盖原有的文件。
-o 不必先询问用户,unzip执 行后覆盖原有文件,即强制覆盖。
-j 不处理压缩文件中原有的目录路径。
-P<密码> 使用zip的密码选项。
2,实例
#解压缩文件test.zip
#-v查看压缩文件目录及文件信息,并不解压
三、gzip命令:gzip [选项] 压缩(解压缩)的文件名
1,选项参数
-d:将压缩文件解压,gzip命令是通过-d来实现解压缩的。
-r:同样是递归压缩。
-t:测试,检查文件完整性。
-v:显示压缩详细过程信息。
-<数字>:指定压缩率(速度)。
2,实例
#gzip是单个压缩文件的,-r递归压缩
#解压文件
#先使用tar命令打包,再压缩
#-<数字>自定义压缩率,默认为6
四、bzip2命令:命令与gzip类似。
1,实例
#bzip2不能压缩目录,也不在类似-r的可选项参数。
#同样可以通过-d实现解压缩
#通过bzcat命令可以直接读压缩文件信息
五、tar 命令:tar实际是一个打包命令,但是它可以调用压缩bzip2,gzip来实现压缩。
1,选项参数
tar选项可以分为二部分。
第一部分:主选项
-c:--create 创建新文档,即打包文件。
-x:--extract(提取),从文档中释放文件,即将打包文件拆包。
-t: --list 列出文档中的内容,即查看打包内的内容。
以上三个为必选,但仅能存在一个,不可能同时打包又拆包。
第二部分:辅助选项(常用)
-f:--file=ARCHIVE用户指定打包后的文件或解包后的文件名。后面接的一定是文件名。
-z:即使用gzip压缩/解压。调用gzip来实现解/压缩,一般格式为.tar.gz或.tgz。
-j:即调用bzip2来解/压缩,一般格式为.tar.bz2
-v: --verbose显示解/压缩过程信息。
-p:preserve-permissions保留权限,即使用原来属性。
--exclude FILE:在压缩过程中,将FILE排除在外,即对FILE不打包。
2,实例
#最简单的打包命令,必须包含-c(打包),-f指定打包后文件。
#打包并且使用bzip2压缩文件
#解压缩bzip2压缩包
#打包绝对路径文件:会提示将“/”移除
#查看打包文件,可以看到根(/)符号去掉了。
3,tar还有很多很有用但又不常用的选项
默认情况下tar在拆包是无法显示将拆包后文件指定到其他目录,这是就可以用到-C+dir命令了。如下:
-d: --diff,--compare 找出归档文件和文件系统的不同之处
-r:--append将文件附加到打包文件之后。
-u: --update 只打包文档中的新文件
-A:--catenate 将tar文件附加到归档文件之后
--delete:将文件从打包文件中删除
备份时,把加入备份文件中的文件属性修改为指定的属性,格式和chmod命令接受的格式相同
--group=group
备份时,把加入备份文件中的文件所属组设定成指定的组
--owner=owner
备份时,把把加入备份文件中的文件所有者设定成指定的用户
-k:--keep-old-files 解包时不覆盖已有的文件
-m:--modification-time 解包时不更改时间
-s –same-order :保持相同的顺序还原
还可以通过管道技术实现‘copy’功能。