归档(也称为打包)是一个文件和目录的**,而这个**被储存在一个文件中,归档文件没有压缩,它占用的空间是其中所有文件和目录的总和。压缩是利用算法将文件进行处理,以达到保留最多文件信息,而让文件容量变小,计算机中压缩处理是将二进制信息中相同的字符串以特殊字符标记已达到压缩的目的。
压缩解压示意图
在Linux系统中,常用到的压缩工具有tar、gzip、bzip2、zip、xz、compress和rar等。
归档程序tar
tar是Linux系统最常用到的归档程序,归档的包称为tar包,通常以“.tar”结尾。生成tar包后,还可以用其它程序来对tar包进行压缩(比如调用gzip、bzip2或xz程序)。
1、命令语法:
tar [选项] [文件|目录]
命令中选项的含义:
-c: 创建新的归档文件-A:追加tar文件至归档-r:追加文件至归档结尾-t:列出归档文件的内容,查看已经备份了哪些文件-u:仅追加比归档中副本更新的文件-x:从归档文件中释放文件-f:使用归档文件或设备-k:保存已经存在的文件。在还原文件时遇到相同的文件时,不会进行覆盖-m:在还原文tar处理的信息-M:创建多卷的归档文件,以便在几个磁盘中存放-v:详细报告tar的归档信息-w:每一步操作都要确认-C<目录>:解压到特点目录-z:通过gzip过滤归档-j:通过bzip2过滤归档-J:通过xz过滤归档-a:使用归档后缀名来决定压缩程序gu
2、归档/home/tar_test目录
生成/home/tar_test.tar:
[root@liu ~]# tar -zcvf /home/tar_test.tar /home/tar_testtar: 从成员名中删除开头的“/”/home/tar_test//home/tar_test/bbb/home/tar_test/ccc/home/tar_test/aaa
查看/home/tar_test.tar:
[root@liu ~]# tar -tvf /home/tar_test.tar drwxr-xr-x root/root 0 2019-08-25 20:47 home/tar_test/-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/bbb-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/ccc-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/aaa
3、tar调用gzip程序压缩
tar命令可以在归档或者解包的同时调用gzip压缩程序。gzip压缩包的文件通常以“.gz”结尾,与gzip对应的解压缩程序是gunzip。
压缩/home/tar_test目录,生成/home/tar_test.tar.gz:
[root@liu ~]# tar -zcvf /home/tar_test.tar.gz /home/tar_testtar: 从成员名中删除开头的“/”/home/tar_test//home/tar_test/bbb/home/tar_test/ccc/home/tar_test/aaa
查看/home/tar_test.tar.gz:
[root@liu ~]# tar -ztvf /home/tar_test.tar.gz drwxr-xr-x root/root 0 2019-08-25 20:47 home/tar_test/-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/bbb-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/ccc-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/aaa
解压tar_test.tar.gz:
[root@liu ~]# tar -zxvf /home/tar_test.tar.gz home/tar_test/home/tar_test/bbbhome/tar_test/ccchome/tar_test/aaa
4、tar调用bzip2程序压缩
tar命令可以在归档或者解包的同时调用bzip2压缩程序。bzip2压缩包的文件通常以“.bz2”结尾,与bzip2对应的解压缩程序是bunzip2。
压缩/home/tar_test目录,生成/home/tar_test.tar.bz2:
[root@liu ~]# tar -jcvf /home/tar_test.tar.bz2 /home/tar_testtar: 从成员名中删除开头的“/”/home/tar_test//home/tar_test/bbb/home/tar_test/ccc/home/tar_test/aaa
查看/home/tar_test.tar.bz2:
[root@liu ~]# tar -jtvf /home/tar_test.tar.bz2 drwxr-xr-x root/root 0 2019-08-25 20:47 home/tar_test/-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/bbb-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/ccc-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/aaa
解压tar_test.tar.bz2:
[root@liu ~]# tar -jxvf /home/tar_test.tar.bz2 home/tar_test/home/tar_test/bbbhome/tar_test/ccchome/tar_test/aaa
5、tar调用xz程序压缩
tar命令可以在归档或者解包的同时调用xz压缩程序。xz压缩包的文件通常以“.xz”结尾,xz是一个使用LZMA压缩算法的无损数据压缩文件格式,tar命令使用-J选项调用xz。
压缩/home/tar_test目录,生成/home/tar_test.tar.xz:
[root@liu ~]#tar -Jcvf /home/tar_test.tar.xz /home/tar_testtar: 从成员名中删除开头的“/”/home/tar_test//home/tar_test/bbb/home/tar_test/ccc/home/tar_test/aaa
查看/home/tar_test.tar.xz:
[root@liu ~]# tar -Jtvf /home/tar_test.tar.xzdrwxr-xr-x root/root 0 2019-08-25 20:47 home/tar_test/-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/bbb-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/ccc-rw-r--r-- root/root 0 2019-08-25 18:14 home/tar_test/aaa
解压tar_test.tar.xz:
[root@liu ~]# tar -Jxvf /home/tar_test.tar.xz home/tar_test/home/tar_test/bbbhome/tar_test/ccchome/tar_test/aaa压缩解压gzip和gunzip
gzip是GNUzip的缩写,是一款GUN自由软件的文件压缩程序,普遍用于UNIX/Linux系统的文件压缩,生成的压缩文件是gzip格式,文件后缀通常用“.gz”。
1、gzip命令语法:
gzip [选项] [文件]
命令中选项的含义:
-c:将输出写到**输出上,并保留源文件-d:将压缩文件进行解压缩-f:强制覆盖输出文件和压缩链接-l:对每一个压缩文件,现实如下字段 压缩文件的大小 未压缩文件的大小 压缩比 未压缩文件的名字-r:递归的查找指定目录并压缩或解压缩其中的所有文件-t:测试,压缩文件是否完整-v:对每一个压缩或解压的文件,显示文件名和压缩比-l:压缩更快-9:压缩更好
2、gzip命令压缩、解压/home/test文件
将/home/test文件压缩成/home/test.gz:
[root@liu ~]# gzip /home/test// gzip命令只需指定源文件[root@liu ~]# ls -l /home/test.gz -rw-r--r-- 1 root root 25 8月 25 22:02 /home/test.gz
显示/home/test.gz的信息:
[root@liu ~]# gzip -l /home/test.gz compressed uncompressed ratio uncompressed_name 25 0 0.0% /home/test
将/home/test.gz解压缩:
[root@liu ~]# gzip -dv /home/test.gz /home/test.gz: 0.0% -- replaced with /home/test
3、gunzip命令语法:
gunzip [选项] [文件]
命令中选项的含义:
-c:将压缩后的文件输出到**输出设备-f:强制解压缩文件,不理会文件名或硬链接是否存在以及文件上是否为符号链接-l:列出压缩文件内容-n:解压时,如果压缩文件内含有原来的文件名及时间戳,则忽略不予处理-N:解压时,如果压缩文件内含有原来的文件名及时间戳,则将其回存到解开的文件上-q:不显示**告信息-r:递归处理,将制定目录下的所有文件及子目录一并处理-t:测试压缩文件是否正确无误-v:现实命令执行**
4、gunzip命令解压/home/test.gz
将/home/test.gz解压缩:
[root@liu ~]# gunzip /home/test.gz// gunzip命令只需指定源文件压缩解压zip和unzip
“.zip”格式文件时Windows和Linux系统通用的压缩文件类型,生成的压缩文件是zip格式,文件后缀通常用“.zip”,zip是目前集中主流压缩算法之一。
1、zip命令语法:
zip [选项] [压缩文件] [文件]
命令选项的含义:
-m:将文件压缩之后,删除源文件-o:将压缩文件设置成和源文件一样的时间-q:安静**,在压缩的时候不显示命令的执行**-r:将指定目录下的所有子目录以及文件一起处理-n<特定字符串>:不压压缩具有特定字尾字符串的文件-v:显示详细的操作信息-z:添加压缩文件的注释-e:在压缩的时候指定加密-T:测试压缩文件的完整性-c:添加一行注释-u:更新压缩文件,往压缩文件内添加新文件-l:压缩速度更快-9:压缩的更好-x<文件名>:压缩时排除指定文件-i<文件名>:压缩时只包括指定文件
2、zip命令压缩、解压/home/test文件
将/home/test文件压缩成/home/test.zip:
[root@liu ~]# zip /home/test.zip /home/test adding: home/test (stored 0%)[root@liu ~]# ls -l /home/test.zip -rw-r--r-- 1 root root 168 8月 25 22:27 /home/test.zip
将/home/test文件压缩成/home/test.zip,并添加密码:
[root@liu ~]# zip -e /home/test.zip /home/testEnter password: Verify password: updating: home/test (stored 0%)[root@liu ~]# ls -l /home/test.zip -rw-r--r-- 1 root root 196 8月 25 22:30 /home/test.zip
查看/home/test.zip的内容:
[root@liu ~]# zcat /home/test.zip gzip: /home/test.zip: encrypted file -- use unzip // 因为是加密的,所有查看不成功
3、unzip命令语法:
unzip [选项] [压缩文件]
命令中个选项的含义:
-x<文件>:解压缩文件列表,但不包括指定的文件-v:查看压缩文件,但不解压缩-t:测试文件是否损坏,但不解压缩-d<目录>:把压缩文件解压到指定目录下-z:只显示压缩文件的注释-n:不覆盖已存在的文件-o:覆盖已存在的文件且不要求用户确认-j:不重建文档的目录结构,把所有文件解压缩到同一目录下
4、unzip命令解压/home/test.zip
将/home/test.zip解压缩:
[root@liu ~]# unzip /home/test.zip Archive: /home/test.zip[/home/test.zip] home/test password: // 压缩时候**密码,解压需要密码 extracting: home/test [root@liu ~]# ls -l /home/test-rw-r--r-- 1 root root 12 8月 25 22:32 /home/test
查看压缩文件/home/test.zip,但不解压:
[root@liu ~]# unzip -v /home/test.zip Archive: /home/test.zip Length Method Size Cmpr Date Time CRC-32 Name-------- ------ ------- ---- ---------- ----- -------- ---- 12 Stored 12 0% 08-25-2019 22:32 b095e5e3 home/test-------- ------- --- ------- 12 12 0% 1 file