2.3 bzip2/bunzip2/bzcat(.bz2文件)
前言
在我们使用计算机的过程中,会需要文件传输,当文件特别大的时候,我们就需要用到压缩工具。在windows系统下,最常见的压缩文件只有两种,一个是 “.rar”,另一个是“.zip”。而在我们的linux系统下,可就大大不同了,它有“.Z”、“.gz”、“.bz2”、“.xz”、“.zip”等众多的压缩文件名,接下来,我们就来分别说一说这些linux系统下常见的压缩文件。
一、打包工具tar
1.1 tar简介
可能有人会有疑问,为什么明明是一个介绍压缩与解压缩的博客,怎么一开始就说打包工具!!!∑(゚Д゚ノ)ノ当然这不是小编写错,我们在介绍压缩文件之前,首先要弄明白一个概念,压缩和打包。
所谓打包,就是把一大堆文件或目录什么的变成一个总的文件;而压缩则是把一个比较大的文件通过一些压缩算法变成一个小文件。为什么要区分这两个概念呢?这是由于Linux中的很多压缩程序只能针对一个文件进行压缩,所以当你想压缩一大堆文件的时候,就需要先把这些文件打包到一起,然后才可以用我们的压缩程序进行压缩。
在linux下,最常用的打包工具就是tar了。接下来我们就详细说一说这个命令。
命令:tar
格式:tar [OPTION]...
1.2 tar选项详解
(1)创建归档
tar -cf /PATH/TO/SOMEFILE.tar FILE…
-c是表示产生新的包,-f指定包的文件名。
1 [root@ keer app]# ll 2 total 28 3 -rw-r--r--. 1 root root 15131 Aug 11 19:44 functions 4 -rw-r--r--. 1 root root 999 Aug 11 19:51 god 5 -rw-r--r--. 1 root root 3518 Aug 11 19:44 passwd 6 -rw-r--r--. 1 root root 288 Aug 11 19:47 poetry 7 [root@ keer app]# tar -cf app.tar ./* ------------把当前目录下所有文件打包到app.tar中 8 [root@ keer app]# ll 9 total 60 10 -rw-r--r--. 1 root root 30720 Aug 11 19:53 app.tar 11 -rw-r--r--. 1 root root 15131 Aug 11 19:44 functions 12 -rw-r--r--. 1 root root 999 Aug 11 19:51 god 13 -rw-r--r--. 1 root root 3518 Aug 11 19:44 passwd 14 -rw-r--r--. 1 root root 288 Aug 11 19:47 poetry
(2)追加文件至归档 (注:不支持对压缩文件的追加)
tar -rf /PATH/TO/SOMEFILE.tar FILE…
-r是表示增加文件的意思。
(3)查看归档文件中的文件列表
tar -tvf /PATH/TO/SOMEFILE.tar
-t是列出文件的意思,-v是对文件进行长列出(详细信息)
Example:
1 [root@ keer app]# tar -tvf app.tar 2 -rw-r--r-- root/root 15131 2017-08-11 19:44 ./functions 3 -rw-r--r-- root/root 999 2017-08-11 19:51 ./god 4 -rw-r--r-- root/root 36 2017-08-11 20:01 ./nihao 5 -rw-r--r-- root/root 3518 2017-08-11 19:44 ./passwd 6 -rw-r--r-- root/root 288 2017-08-11 19:47 ./poetry 7 [root@ keer app]# tar -rf app.tar nihao ------------追加nihao文件至app.tar中 8 [root@ keer app]# tar -tvf app.tar ------------查看app.tar中的文件列表 9 -rw-r--r-- root/root 15131 2017-08-11 19:44 ./functions 10 -rw-r--r-- root/root 999 2017-08-11 19:51 ./god 11 -rw-r--r-- root/root 36 2017-08-11 20:01 ./nihao 12 -rw-r--r-- root/root 3518 2017-08-11 19:44 ./passwd 13 -rw-r--r-- root/root 288 2017-08-11 19:47 ./poetry 14 -rw-r--r-- root/root 36 2017-08-11 20:01 nihao
(4)展开归档
tar -xf /PATH/TO/SOMEFILE.tar
-x是解包的意思
tar -xf /PATH/TO/SOMEFILE.tar -C /PATH/
-C是指定新的路径存储解包后的文件
Example:
1 [root@ keer app]# tar -cvf test.tar /etc/passwd /etc/group -----------打包/etc/passwd和/etc/group到test.tar中 2 tar: Removing leading `/' from member names 3 /etc/passwd 4 /etc/group 5 [root@ keer app]# ll 6 total 76 7 -rw-r--r--. 1 root root 30720 Aug 12 08:46 app.tar 8 -rw-r--r--. 1 root root 15131 Aug 11 19:44 functions 9 -rw-r--r--. 1 root root 999 Aug 11 19:51 god 10 -rw-r--r--. 1 root root 36 Aug 11 20:01 nihao 11 -rw-r--r--. 1 root root 3518 Aug 11 19:44 passwd 12 -rw-r--r--. 1 root root 288 Aug 11 19:47 poetry 13 -rw-r--r--. 1 root root 10240 Aug 12 08:55 test.tar 14 [root@ keer app]# tar -xf test.tar ------------解包test.tar 15 [root@ keer app]# ll 16 total 80 17 -rw-r--r--. 1 root root 30720 Aug 12 08:46 app.tar 18 drwxr-xr-x. 2 root root 4096 Aug 12 08:55 etc ------------解包test.tar生成的文件目录 19 -rw-r--r--. 1 root root 15131 Aug 11 19:44 functions 20 -rw-r--r--. 1 root root 999 Aug 11 19:51 god 21 -rw-r--r--. 1 root root 36 Aug 11 20:01 nihao 22 -rw-r--r--. 1 root root 3518 Aug 11 19:44 passwd 23 -rw-r--r--. 1 root root 288 Aug 11 19:47 poetry 24 -rw-r--r--. 1 root root 10240 Aug 12 08:55 test.tar 25 [root@ keer app]# ll etc/* 26 -rw-r--r--. 1 root root 1500 Aug 8 17:57 ./etc/group 27 -rw-r--r--. 1 root root 3518 Aug 8 17:57 ./etc/passwd
(5)结合压缩工具实现:归档并压缩(配合cf使用)
-j:bzip2 -z:gzip -J:xz
-T选项指定输入文件,-X选项指定包含要排除的文件列表
tar -zcvf mybackup.tgz -T /root/includefilelist -X /root/ excludefilelist
Includefilelist和excludefilelist两个文件存的都是文件的路径,Includefilelist文件里存的路径是需要补充的文件,excludefilelist文件里存的路径是需要排除的文件。比如在我们需要大批量进行打包压缩的时候,我们可以把打包和压缩放在一条命令中进行,此时,我们就可以把需要打包的文件路径存在Includefilelist文件,然而这些文件中可能有一部分我们是不需要的,就可以将其路径存在excludefilelist文件。当然名字是可以随心所欲的认定~
1 [root@ keer app]# tar -jcf files.tar.bz2 /etc/passwd /etc/group ----------把/etc/passwd和/etc/group打包并压缩至files.tar.bz2中 2 tar: Removing leading `/' from member names 3 [root@ keer app]# ll 4 total 84 5 -rw-r--r--. 1 root root 30720 Aug 12 08:46 app.tar 6 drwxr-xr-x. 2 root root 4096 Aug 12 08:55 etc 7 -rw-r--r--. 1 root root 1866 Aug 12 09:11 files.tar.bz2 8 -rw-r--r--. 1 root root 15131 Aug 11 19:44 functions 9 -rw-r--r--. 1 root root 999 Aug 11 19:51 god 10 -rw-r--r--. 1 root root 36 Aug 11 20:01 nihao 11 -rw-r--r--. 1 root root 3518 Aug 11 19:44 passwd 12 -rw-r--r--. 1 root root 288 Aug 11 19:47 poetry 13 -rw-r--r--. 1 root root 10240 Aug 12 08:55 test.tar
1 [root@ keer app]# cat includefilelist 2 /etc/init.d/ 3 /root/bin 4 /app 5 [root@ keer app]# cat excludefilelist 6 /root/bin/createuser21.sh 7 /root/bin/createyonghu21.sh 8 [root@ keer app]# tar -zcvf mybackup.tgz -T ./includefilelist -X ./excludefilelist ----------把includefilelist中写的文件打包,除了excludefilelist中写的文件 9 tar: Removing leading `/' from member names 10 /etc/init.d 11 /root/bin/ 12 /root/bin/jiaozuoye21.sh 13 /root/bin/sumspace21.sh 14 /root/bin/links.sh 15 /root/bin/disk.sh 16 /root/bin/argsnum21.sh 17 /root/bin/createsh21.sh 18 /root/bin/nologin21.sh 19 /root/bin/reset21.sh 20 /root/bin/hello.sh 21 /root/bin/sumfile21.sh 22 /root/bin/systeminfo.sh 23 /root/bin/hostping21.sh 24 /root/bin/sumid21.sh 25 /root/bin/backup.sh 26 /root/bin/per21.sh 27 /root/bin/login21.sh 28 /root/bin/excute21.sh 29 /root/bin/checkdisk21.sh 30 /app/ 31 /app/poetry 32 /app/functions 33 /app/mybackup.tgz 34 /app/test.tar 35 /app/god 36 /app/files.tar.bz2 37 /app/includefilelist 38 /app/passwd 39 /app/nihao 40 /app/excludefilelist 41 /app/etc/ 42 /app/etc/group 43 /app/etc/passwd 44 /app/app.tar 45 46 #以上打包的所有文件中,不包含/root/bin/createuser21.sh,/root/bin/createyonghu21.sh这两个文件。 47 48 [root@ keer app]# ll 49 total 112 50 -rw-r--r--. 1 root root 30720 Aug 12 08:46 app.tar 51 drwxr-xr-x. 2 root root 4096 Aug 12 08:55 etc 52 -rw-r--r--. 1 root root 54 Aug 12 09:19 excludefilelist 53 -rw-r--r--. 1 root root 1866 Aug 12 09:11 files.tar.bz2 54 -rw-r--r--. 1 root root 15131 Aug 11 19:44 functions 55 -rw-r--r--. 1 root root 999 Aug 11 19:51 god 56 -rw-r--r--. 1 root root 28 Aug 12 09:18 includefilelist 57 -rw-r--r--. 1 root root 18307 Aug 12 09:20 mybackup.tgz ------生成的文件 58 -rw-r--r--. 1 root root 36 Aug 11 20:01 nihao 59 -rw-r--r--. 1 root root 3518 Aug 11 19:44 passwd 60 -rw-r--r--. 1 root root 288 Aug 11 19:47 poetry 61 -rw-r--r--. 1 root root 10240 Aug 12 08:55 test.tar
1.3 tar补充——包分隔之split
如果我们在打包的过程中,打包出来的文件大小过大,可能依然不适合传输,此时我们可以把这个文件用split命令分割成多个小文件,这样可能更加方便我们的储存和传输,当然,在解包的时候,我么可以再将其还原成一个完整的文件。
命令:split
格式:split -b size -d tar-file-name prefix-name
-b表示每个输出文件的大小,-d表示输出的结尾以数字标示(如果不加-d则以字母表示为后缀)
Example:
1、split -b 1M -d mybackup.tgz mybackup-parts
2、split -b 1M mybackup.tgz mybackup-parts
1.4 打包备份cpio
cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。
命令:cpio
格式:cpio [选项] > 文件名或设备名
cpio [选项] < 文件名或设备名
选项: -o 将文件拷贝打包成文件或将文件输出到设备上
-i 解包,将打包文件解压或将设备上的备份还原到系统
-t 预览,查看文件内容或输出到设备上的文件内容
-v 显示打包过程中的文件名称
-d 解包生成目录,在cpio还原时,自动的建立目录
-c 一种较新的存储方式
1 [root@ keer app]# find -type f |cpio -o > /app/etc_f.cpio ----------通过重定向把/etc/下的普通文件进行打包备份 2 [root@ keer app]# ll 3 total 204 4 -rw-r--r--. 1 root root 30720 Aug 12 08:46 app.tar 5 drwxr-xr-x. 2 root root 4096 Aug 12 08:55 etc 6 -rw-r--r--. 1 root root 107008 Aug 12 09:31 etc_f.cpio 7 -rw-r--r--. 1 root root 54 Aug 12 09:19 excludefilelist 8 -rw-r--r--. 1 root root 1866 Aug 12 09:11 files.tar.bz2 9 -rw-r--r--. 1 root root 0 Aug 12 09:26 functions 10 -rw-r--r--. 1 root root 999 Aug 11 19:51 god 11 -rw-r--r--. 1 root root 28 Aug 12 09:18 includefilelist 12 -rw-r--r--. 1 root root 18307 Aug 12 09:20 mybackup.tgz 13 -rw-r--r--. 1 root root 36 Aug 11 20:01 nihao 14 -rw-r--r--. 1 root root 3518 Aug 11 19:44 passwd 15 -rw-r--r--. 1 root root 288 Aug 11 19:47 poetry 16 -rw-r--r--. 1 root root 10240 Aug 12 08:55 test.tar 17 18 # 查看刚刚打包的文件内容: 19 20 [root@ keer app]# cpio -vt < etc_f.cpio |less 21 -rw-r--r-- 1 root root 288 Aug 11 19:47 poetry 22 -rw-r--r-- 1 root root 0 Aug 12 09:26 functions 23 -rw-r--r-- 1 root root 18307 Aug 12 09:20 mybackup.tgz 24 -rw-r--r-- 1 root root 10240 Aug 12 08:55 test.tar 25 -rw-r--r-- 1 root root 999 Aug 11 19:51 god 26 -rw-r--r-- 1 root root 1866 Aug 12 09:11 files.tar.bz2 27 -rw-r--r-- 1 root root 28 Aug 12 09:18 includefilelist 28 -rw-r--r-- 1 root root 3518 Aug 11 19:44 passwd 29 -rw-r--r-- 1 root root 36 Aug 11 20:01 nihao 30 -rw-r--r-- 1 root root 54 Aug 12 09:19 excludefilelist 31 -rw-r--r-- 1 root root 35328 Aug 12 10:33 etc_f.cpio 32 -rw-r--r-- 1 root root 30720 Aug 12 08:46 app.tar
新建一个目录,并将文件恢复到该目录下
1 [root@ keer app]# mkdir etc 2 [root@ keer app]# ll 3 total 196 4 drwxr-xr-x. 2 root root 4096 Aug 12 10:51 etc 5 -rw-r--r--. 1 root root 101888 Aug 12 10:33 etc_f.cpio 6 [root@ keer app]# cd etc/ 7 [root@ keer etc]# pwd 8 /app/etc 9 [root@ keer etc]# cpio -id < ../etc_f.cpio 10 199 blocks 11 [root@ keer etc]# ll 12 total 128 13 -rw-r--r--. 1 root root 30720 Aug 12 10:52 app.tar 14 -rw-r--r--. 1 root root 35328 Aug 12 10:52 etc_f.cpio 15 -rw-r--r--. 1 root root 54 Aug 12 10:52 excludefilelist 16 -rw-r--r--. 1 root root 1866 Aug 12 10:52 files.tar.bz2 17 -rw-r--r--. 1 root root 0 Aug 12 10:52 functions 18 -rw-r--r--. 1 root root 999 Aug 12 10:52 god 19 -rw-r--r--. 1 root root 28 Aug 12 10:52 includefilelist 20 -rw-r--r--. 1 root root 18307 Aug 12 10:52 mybackup.tgz 21 -rw-r--r--. 1 root root 36 Aug 12 10:52 nihao 22 -rw-r--r--. 1 root root 3518 Aug 12 10:52 passwd 23 -rw-r--r--. 1 root root 288 Aug 12 10:52 poetry 24 -rw-r--r--. 1 root root 10240 Aug 12 10:52 test.tar
有时使用cpio命令打包的文件过大,我们还可以使用压缩命令对其进行压缩
1 [root@ keer app]# bzip2 -k -9 etc_f.cpio 2 [root@ keer app]# ll -h 3 total 232K 4 drwxr-xr-x. 2 root root 4.0K Aug 12 10:52 etc 5 -rw-r--r--. 1 root root 100K Aug 12 10:33 etc_f.cpio 6 -rw-r--r--. 1 root root 35K Aug 12 10:33 etc_f.cpio.bz2
二、压缩工具汇总
2.1 compress/uncompress(.Z文件)
命令:compress 压缩
格式:compress [-dfvcVr] [-b maxbits] [file ...]
选项: -d:解压缩,相当于uncompress(不能补齐)
-c:将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。
-v:显示详情(压缩过程)
-f:默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
命令:uncompress 解压缩(可以补齐)
格式:uncompress [file ...]
Example:
1 [root@ keer app]# ll -h 2 total 1.3G 3 -rw-r--r--. 1 root root 1.3G Aug 12 11:07 passwd 4 [root@ keer app]# compress passwd ----------压缩passwd 5 [root@ keer app]# ll -h 6 total 117M 7 -rw-r--r--. 1 root root 117M Aug 12 11:07 passwd.Z
由上可以看出,这个工具的压缩效率不是很高,而且会覆盖原文件,我们怎么才能保留原文件并且也压缩呢?
1 [root@ keer app]# compress -c passwd > passwd.Z 2 [root@ keer app]# ll -h 3 total 1.4G 4 -rw-r--r--. 1 root root 1.3G Aug 12 11:07 passwd 5 -rw-r--r--. 1 root root 117M Aug 12 11:16 passwd.Z
当然这种方法可能会导致文件的权限改变0.0所以建议不要使用这种方法。
如果我们压缩的文件中有带有硬链接的文件呢?我们加上 -f 选项即可:
1 [root@ keer app]#ll -h 2 total 1.4G 3 -rw-r--r--. 1 root root 1.3G Aug 12 11:07 passwd 4 -rw-r--r--. 1 root root 7.8M Aug 12 11:23 passwd.gz 5 -rw-r--r--. 1 root root 117M Aug 12 11:16 passwd.Z 6 [root@ keer app]# 7 [root@ keer app]#ll -h 8 total 1.4G 9 -rw-r--r--. 1 root root 1.3G Aug 12 11:07 passwd 10 -rw-r--r--. 1 root root 7.8M Aug 12 11:23 passwd.gz 11 -rw-r--r--. 1 root root 117M Aug 12 11:16 passwd.Z 12 [root@ keer app]#ln passwd passwd.ln 13 [root@ keer app]#ll -h 14 total 2.6G 15 -rw-r--r--. 2 root root 1.3G Aug 12 11:07 passwd 16 -rw-r--r--. 1 root root 7.8M Aug 12 11:23 passwd.gz 17 -rw-r--r--. 2 root root 1.3G Aug 12 11:07 passwd.ln ------------注意硬链接数 18 -rw-r--r--. 1 root root 117M Aug 12 11:16 passwd.Z 19 [root@ keer app]#compress passwd 20 passwd has 1 other links: unchanged 21 [root@ keer app]#compress -f passwd 22 [root@ keer app]#ll -h 23 total 1.4G 24 -rw-r--r--. 1 root root 7.8M Aug 12 11:23 passwd.gz 25 -rw-r--r--. 1 root root 1.3G Aug 12 11:07 passwd.ln ------------注意硬链接数 26 -rw-r--r--. 1 root root 117M Aug 12 11:07 passwd.Z
下面给大家说一下解压缩,一共三种方法:
1 [root@ keer app]# compress -d passwd.Z 2 [root@ keer app]# uncompress passed.Z 3 [root@ keer app]# zcat passwd.Z > passwd
由上可以看出,我们有一个解压缩的万能工具——zcat。这个命令后面直接跟需要解压缩的文件名,但是这个命令出来的内容也是直接打印的,需要配合重定向使用。
在本文介绍的所有压缩工具中,只有compress -d 命令是不可以补齐的,其他的都可以,这个要注意喏。所以这个工具其实并不是很好用。
2.2 gzip/gunzip(.gz文件)
命令:gzip
格式:gzip [OPTION]... FILE ...
选项: -d 解压缩,相当于gunzip
-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。
-# 数字越大,压缩比越高,速度越慢,文件越小。
-1 等于 --fast
-2,3,4,5,6(default),7,8
-9 等于 --best
Example:
1 [root@ keer app]# gzip -c passwd > passwd.gz -----------保留原文件并对passwd进行压缩 2 [root@ keer app]# ll -h 3 total 1.4G 4 -rw-r--r--. 1 root root 1.3G Aug 12 11:07 passwd 5 -rw-r--r--. 1 root root 7.8M Aug 12 11:23 passwd.gz
可以看出,这个的压缩效率还是蛮高的,这个命令有一个设定压缩比的功能,用数字1-9表示,下面我们就来演示一下:
1 [root@ keer app]# gzip -c1 passwd > passwd.1.gz 2 [root@ keer app]# gzip -c6 passwd > passwd.6.gz 3 [root@ keer app]# gzip -c9 passwd > passwd.9.gz 4 5 #我们只来对比一下1,6,9。别的就不做过多演示 6 7 [root@ keer app]# ll 8 total 1477020 9 -rw-r--r--. 1 root root 1330664794 Aug 12 11:07 passwd 10 -rw-r--r--. 1 root root 35703636 Aug 12 14:34 passwd.1.gz 11 -rw-r--r--. 1 root root 8162665 Aug 12 14:35 passwd.6.gz 12 -rw-r--r--. 1 root root 7974465 Aug 12 14:36 passwd.9.gz 13 -rw-r--r--. 1 root root 8162665 Aug 12 11:23 passwd.gz
从上面我们可以发现,passwd.6.gz和passwd.gz的大小是一样的,也就是说,gzip的默认压缩比是6
gzip的解压方法也是三种,如下:1 [root@ keer app]# gzip -d test_gzip.gz 2 [root@ keer app]# gunzip test_gzip.gz 3 [root@ keer app]# zcat test_gzip.gz > test_gzip
2.3 bzip2/bunzip2/bzcat(.bz2文件)
命令:bzip2
格式:bzip2 [OPTION]... FILE ...
选项: -d 解压缩,相当于bunzip2&bzcat(bzcat需要配合重定向使用)
-k 保留原文件
-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。
-# 数字越大,压缩比越高,速度越慢,文件越小。
-1 等于 --fast
-2,3,4,5,6,7,8
-9 等于 --best (default)
Example:
跟前面介绍到的两个压缩工具相比,bzip2工具不仅提高了压缩比,还可以保留原文件,可以说是非常好用了( • ̀ω•́ )✧但是但是!压缩的时间真的是很长了╮(╯﹏╰)╭所以太大的文件不建议用这个工具
1 [root@ keer app]# ll -h 2 total 146M 3 -rw-r--r--. 1 root root 146M Aug 12 15:28 test 4 [root@ keer app]# bzip2 -k test -------------压缩test文件 5 [root@ keer app]# ll -h 6 total 147M 7 -rw-r--r--. 1 root root 146M Aug 12 15:28 test 8 -rw-r--r--. 1 root root 564K Aug 12 15:28 test.bz2
同样的,我们也来说一下如何解压
1 [root@ keer app]# bunzip2 test.bz2 2 [root@ keer app]# bzip2 -d test.bz2 3 [root@ keer app]# bzcat test.bz2 > test
2.4 xz/unxz/xzcat(.xz文件)
命令:xz
格式:xz [OPTION]... FILE...
选项: -d 解压缩 xzcat
-k 保留原文件
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。
-# 数字越大,压缩比越高,速度越慢,文件越小。
-0 等于 --fast
-1 -2,3,4,5,6(default),7,8
-9 等于 --best
Example:
当当当当,本文中介绍的所有压缩工具中最好用的来了~xz与上文中介绍的三个工具相比,压缩比可是高的吓人喏
1 [root@ keer app]# ll -h 2 total 162M 3 -rw-r--r--. 1 root root 146M Aug 12 15:28 test 4 -rw-r--r--. 1 root root 564K Aug 12 15:28 test.bz2 5 -rw-r--r--. 1 root root 870K Aug 12 15:42 test.gz 6 -rw-r--r--. 1 root root 15M Aug 12 15:42 test.Z 7 [root@ keer app]# xz -kv test 8 100 % 23.6 KiB / 145.6 MiB = 0.000 11 MiB/s 0:13 9 [root@ keer app]# ll -h 10 total 162M 11 -rw-r--r--. 1 root root 146M Aug 12 15:28 test 12 -rw-r--r--. 1 root root 564K Aug 12 15:28 test.bz2 13 -rw-r--r--. 1 root root 870K Aug 12 15:42 test.gz 14 -rw-r--r--. 1 root root 24K Aug 12 15:28 test.xz 15 -rw-r--r--. 1 root root 15M Aug 12 15:42 test.Z
这就可以很清楚的对比出xz的压缩比有多大了,而且xz的压缩时间也很快喏~0.0
我们再来说一下xz如何解压
1 [root@ keer app]# xz -d test.xz 2 [root@ keer app]# xzcat test.xz > test
2.5 打包压缩zip/unzip(.zip文件)
命令:zip(打包压缩)
格式:zip -r 包名文件1路径 文件二路径 …
zip命令是将多个文件进行打包压缩,所以直接在包名后跟文件路径即可。如果不加包名,会默认将第一个文件作为包名,该文件不参与打包压缩的过程。
命令:unzip(打包解压缩)
格式:unzip file...
unzip解压时,会在当前目录下新建一个文件夹,文件夹内储存包内的所有文件。文件的权限不变。
补充:
|zip 将生成的文件名 –
可以将管道前的输出结果转为文件并压缩。通过此方式压缩的文件只能使用“unzip -p 压缩包 > 新文件 ”来解压缩
unzip -p 预览解压缩后的内容到屏幕,可以配合重定向将结果保存到指定文件,权限会发生变化。(一般用于单个文件的压缩和解压缩)
Example:
1 [root@ keer app]# zip -r files /etc/group /etc/passwd ----------打包压缩/etc/group和/etc/passwd文件 2 adding: etc/group (deflated 51%) 3 adding: etc/passwd (deflated 64%) 4 [root@ keer app]# ll 5 total 4 6 -rw-r--r--. 1 root root 2336 Aug 12 15:50 files.zip 7 [root@ keer app]# unzip -d lianxi files.zip -----------解压文件files.zip到lianxi目录下 8 Archive: files.zip 9 inflating: lianxi/etc/group 10 inflating: lianxi/etc/passwd 11 [root@ keer app]# ll 12 total 8 13 -rw-r--r--. 1 root root 2336 Aug 12 15:50 files.zip 14 drwxr-xr-x. 3 root root 4096 Aug 12 15:51 lianxi 15 [root@ keer app]# cd lianxi/ 16 [root@ keer lianxi]# ll 17 total 4 18 drwxr-xr-x. 2 root root 4096 Aug 12 15:51 etc 19 [root@ keer lianxi]# cd etc/ 20 [root@ keer etc]# ll 21 total 8 22 -rw-r--r--. 1 root root 1500 Aug 8 17:57 group 23 -rw-r--r--. 1 root root 3518 Aug 8 17:57 passwd
1 [root@ keer app]# find /etc/ -type f | zip etc.zip - -----------压缩 2 adding: - (deflated 86%) 3 [root@ keer app]# ll 4 total 24 5 -rw-r--r--. 1 root root 16230 Aug 12 15:55 etc.zip 6 [root@ keer app]# unzip -p etc.zip > etc.zz -----------解压 7 [root@ keer app]# ll 8 total 140 9 -rw-r--r--. 1 root root 16230 Aug 12 15:55 etc.zip 10 -rw-r--r--. 1 root root 117360 Aug 12 15:55 etc.zz
以上,如有不足之处还请大家多多指教诺(〃'▽'〃)