Linux学习系列之档案的压缩与打包
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。Linux环境支持的压缩指令非常多,且不同的指令所用的压缩技术不同,所以需要对应的指令来解压缩。Linux的档案属性和文件名是绝对没有关系的,但是为了方便记忆,常用的压缩文件扩展名有:
*.Z compress 程序压缩的档案
*.gz gzip程序压缩的档案
*.bz2 bzip2程序压缩的档案
*.tar tar 程序打包的数据,并没有压缩过
*.tar.gz tar程序打包的档案,并且经过gzip的压缩
*.tar.bz2 tar程序打包的档案,并且经过bzip2的压缩
gzip、bzip2 和过时的compress 是压缩指令,通常仅能针对一个档案来压缩和解压缩。而单纯的tar功能只是打包,即是将很多档案集结成为一个档案。
一、gzip压缩和解压缩指令
1.命令格式:
gzip[参数][文件或者目录]
2.命令功能:
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。
3.命令参数:
-a 将所有由PATH目录中可以找到的指令均列出
-c或--stdout或--to-stdout 把压缩后的文件输出到标准输出设备,不去更动原始文件。
-d或--decompress或----uncompress 解开压缩文件。
-f或--force 强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-k : 保留源文件,而不会删除原档案
-r或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-t或--test 测试压缩文件是否正确无误。
-v或--verbose 显示指令执行过程。
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。
(这里只列举了部分常用参数,详情请使用man gzip 查询)
4.使用实例:
实例1:把当前目录下的每个文件压缩成.gz文件
命令:gzip *
输出:
说明:gzip 只对文件进行压缩,压缩后源文件不存在。将上述文件解压缩为:gzip -dv *
实例2:显示使用gzip压缩后的文本内容
命令:zcat 压缩后的文件名
输出:
二、bzip2压缩和解压缩指令
1.命令格式:
bzip2 [参数][文件或者目录]
2.命令功能:
*.bz2 的压缩程序,压缩比比gzip 更好,参数和gzip相似
3.命令参数:
-c : 将压缩的过程产生的数据输出到屏幕
-d : 解压缩的参数
-k : 保留源文件,而不会删除原档案
-z : 压缩的参数
-v : 可以显示出原档案/压缩文件的压缩比信息
4. 使用实例:
实例1:把指定文件压缩成.bz2文件
命令:bzip2 a.sh 或者 bzip -k b.sh (保留源文件)
输出:
说明:将上述文件解压缩命令:bzip2 -d a.sh.bz2
显示压缩后的文本内容: bzcat a.sh.bz2
三、tar打包指令
1.命令格式:
tar[必要参数][选择参数][文件]
2.命令功能:
用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
3.命令参数:
必要参数有如下:
-A 新增压缩文件到已存在的压缩
-B 设置区块大小
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
可选参数如下:
-b 设置区块数目
-C 切换到指定目录
-f 指定压缩文件,这个参数是最后一个参数,后面只能接档案名。
--help 显示帮助信息
--version 显示版本信息
4. 使用实例:
实例1:把文件 a.sh 和 目录project/ 及test/ 下的所有文件打包并使用gzip压缩
命令:tar -czvf aa.tar.gz a.sh project/ test/
实例2:把上面的压缩包解压到指定目录下
命令:tar -xzvf aa.tar.gz -C study/
结果:
实例3:
#tar cvf 打包(但不压缩)
#tar xvf 解包到当前目录下
#tar czvf 打包并压缩(实际使用gzip进行的压缩)
#tar xzvf 解包解压缩
# tar -cf all.tar *.jpg
将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。# tar -rf all.tar *.gif
将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。# tar -tf all.tar
列出all.tar包中所有文件,-t是列出文件的意思#
tar -N "2012/11/13" -zcvf log17.tar.gz test在 文件夹当中,比某个日期新的文件才备份#
tar -zxvf /opt/soft/test/log30.tar.gz log2013.log 只将 /tar 内的 部分文件解压出来
四、总结
1、*.tar 用 tar -xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar -xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar -xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar -xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
示例:
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2 或tar -bzip xvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
———————————————
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
———————————————
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
———————————————
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
压缩一个目录使用 -r 参数,-r 递归。例: $ zip -r FileName.zip DirName
———————————————
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName