概念

归档,也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和。

  1. 通常,归档总是会和系统(数据)备份联系在一起,不过,有关数据备份的内容,留到后续章节讲,本章仅学习归档命令的基本使用。

和归档文件类似,压缩文件也是一个文件和目录的集合,且这个集合也被存储在一个文件中,但它们的不同之处在于,压缩文件采用了不同的存储方式,使其所占用的磁盘空间比集合中所有文件大小的总和要小。

压缩是指利用算法将文件进行处理,已达到保留最大文件信息,而让文件体积变小的目的。其基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。比如说,在压缩文件中,有不止一处出现了 “C语言中文网”,那么,在压缩文件时,这个词就会用一个代码表示并写入词典文件,这样就可以实现缩小文件体积的目的。

1.tar

压缩

选项:
-z           压缩tar.gz格式    
-j             压缩tar.bz2格式
-c           代表压缩
-v           详细显示操作信息,压缩文件的过程
-f           后面紧跟 压缩之后的文件名
#将目录里所有jpg文件打包成jpg.tar
tar -cvf jpg.tar *.jpg 

#将目录里所有jpg文件打包成jpg.tar.gz
tar -zcvf jpg.tar *.jpg

#把anaconda-ks.cfg文件和/tmp目录打包成ana.tar文件包
tar -cvf ana.tar anaconda-ks.cfg /tmp/

#将chen归档并压缩成test.tar.gz格式压缩包(test为压缩包名)
tar -zcvf test.tar.gz  chen

#将chen打包bz2格式压缩包
tar -jcvf test.tar.bz2  chen

解压缩

默认提取到当前目录,不会创建和压缩文件名称一样的目录

选项:
-z                    解压tar.gz格式
-j                      解压tar.bz2格式
-x                    代表解压
-v                    解压过程详细信息
-f                    后面紧跟 解压之后的文件名
-C                       大写C。指定解压缩目录
#解压 tar包
tar -xvf file.tar 

#将gz格式test解压到目录/home/dir1
tar -zxvf test.tar.gz  -C /home/dir1

#将bz2格式test解压到目录/home/dir1
tar -jxvf test.tar.bz2 -C /home/dir1

2.zip

需要安装

yum install zip
yum install unzip

压缩

选项:
-r    递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩。
-m    将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中。
-o    将压缩文件内的所有文件的最新变动时间设为压缩的时间
-v    显示详细的压缩过程信息。
-q    在压缩的时候不显示命令的执行过程。
-压缩级别    压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。
-u    更新压缩文件,即往压缩文件中添加新文件。
#将anaconda-ks.cfg压缩,包名为ana
zip ana.zip anaconda-ks.cfg

#使用 -r 压缩目录
--创建目录
mkdir dir1

--压缩目录
zip -r dir1.zip dir1

解压

选项:
-d         目录名    将压缩文件解压到指定目录下。
-n        解压时并不覆盖已经存在的文件。
-o        解压时覆盖已经存在的文件,并且无需用户确认。
-v        查看压缩文件的详细信息,包括压缩文件中包含的文件大小、文件名以及压缩比等,但并不做解压操作。
-t        测试压缩文件有无损坏,但并不解压。
-x      指定不要处理压缩文件中的那些文件
#不论是文件压缩包,还是目录压缩包,都可以直接解压缩
unzip dir1.zip

#使用 -d 选项手动指定解压缩位置
unzip -d /tmp/ ana.zip