压缩与解压缩

 

前言

一、打包工具tar

1.1 tar简介

1.2 tar选项详解

1.3 tar补充——包分隔之split

1.4 打包备份 cpio

二、压缩工具汇总

2.1 compress/uncompress.Z文件)

2.2 gzip/gunzip.gz文件)

2.3 bzip2/bunzip2/bzcat.bz2文件)

2.4 xz/unxz/xzcat.xz文件)

2.5 打包压缩zip/unzip.zip文件)

 

前言

在我们使用计算机的过程中,会需要文件传输,当文件特别大的时候,我们就需要用到压缩工具。在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使用)

-jbzip2    -zgzip    -Jxz

-T选项指定输入文件,-X选项指定包含要排除的文件列表  

    tar -zcvf mybackup.tgz -T /root/includefilelist -X  /root/ excludefilelist

Includefilelistexcludefilelist两个文件存的都是文件的路径,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:

1split -b 1M -d mybackup.tgz mybackup-parts

2split -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

-23456(default)78

-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&bzcatbzcat需要配合重定向使用)

-k 保留原文件

-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。

-f 默认不对硬链接数2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.

-v 显示详细过程。

-#         数字越大,压缩比越高,速度越慢,文件越小。

-1 等于 --fast

-2345678

-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 -23456(default)78

       -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

 

 

    以上,如有不足之处还请大家多多指教诺(〃'▽'〃)

转载于:https://www.cnblogs.com/keerya/p/7347492.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值