知识点 压缩与打包
命令:gzip,gunzip,zcat,bzcat,xzcat,bzip2,bunzip2,xz,zip,unzip,tar.
压缩工具可以压缩文件的大小,这样在带宽恒定的情况下就可以更好的节约带宽资源了!
命令gzip
压缩命令,只能压缩文件,不能压缩目录!
[root@localhost test]# ll
-rw-r--r--. 1 root root 4083800 Oct 30 23:56 1.txt
[root@localhost test]# gzip 1.txt
[root@localhost test]# ll
-rw-r--r--. 1 root root 1006316 Oct 30 23:56 1.txt.gz //压缩之后源文件没有了!大小也变小了
[root@localhost test]# zcat 1.txt.gz //可以查看该文件,但是如果文件很大不要使用,会一直刷屏!根本来不及看
[root@localhost test]# file 1.txt.gz
1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Tue Oct 30 23:56:03 2018 //可以查看压缩包的详细信息!
[root@localhost test]# gzip -d 1.txt.gz //解压缩文件。由于压缩的时候把源文件也干掉了,所以现在解压出来就没有文件名重复的困扰了
[root@localhost test]# ll
-rw-r--r--. 1 root root 4083800 Oct 30 23:56 1.txt
[root@localhost test]# gunzip 1.txt.gz
[root@localhost test]# ll
-rw-r--r--. 1 root root 4083800 Oct 30 23:56 1.txt //gunzip ==gzip -d 命令
[root@localhost test]# gzip -c 1.txt > /test/5.txt.gz
[root@localhost test]# ll
总用量 52
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 3337 10月 31 11:48 1.txt
-rw-r--r--. 1 root root 63 10月 31 16:41 5.txt.gz
gzip命令后面可以跟压缩等级,从1-9强度依次变大!缺省值为-6级别。
bzip2命令 也是压缩文件命令,用法和gzip差不多,只是算法不一样!也是只能针对文件,无法针对目录.
[root@localhost ~]# yum install -y bizp2 //默认bzip2还没安装,下yunm安装!
[root@localhost test]# ll
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
[root@localhost test]# bzip2 www
[root@localhost test]# ll
-rw-r--r--. 1 root root 228 10月 31 06:55 www.bz2
[root@localhost test]# bzcat www.bz2 //和zcat一样 查看内容
[root@localhost test]# bunzip2 www.bz2
[root@localhost test]# ll
-rw-r--r--. 1 root root 8326 10月 31 06:55 www //正常的压缩和解压缩和gzip一样。
[root@localhost test]# bzip2 -c tt.txt > /tmp/gg.txt.bz2 //将tt.txt压缩并重定向到/tmp下 改名为gg.txt.bz2
[root@localhost test]# ll
-rw-r--r--. 1 root root 13 11月 1 10:06 tt.txt //源文件还在
[root@localhost test]# ll /tmp
-rw-r--r--. 1 root root 52 11月 1 10:18 gg.txt.bz2
xz命令 压缩文件命令,用法和选项和gzip差不多。默认情况下也是不安装的!先执行#yum install -y xz
[root@localhost test]# yum install -y xz
[root@localhost test]# ll
-rw-r--r--. 1 root root 20480 10月 31 07:25 fire2
[root@localhost test]# du -sh fire2
20K fire2 //源文件本来大小
[root@localhost test]# xz fire2
[root@localhost test]# du -sh fire2.xz
4.0K fire2.xz //压缩之后的大小,比前面2个更狠!
[root@localhost test]# ll
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 1588 10月 31 07:25 fire2.xz
[root@localhost test]# file fire2.xz
fire2.xz: XZ compressed data
[root@localhost test]# xz -d fire2.xz //解压文件。
[root@localhost test]# xz -dc fire2.xz > /tmp/water.xz
[root@localhost test]# ll
-rw-r--r--. 1 root root 1588 10月 31 07:25 fire2.xz
[root@localhost test]# ll /tmp/
-rw-r--r--. 1 root root 20480 11月 1 10:29 water.xz //用法和上面的2个都差不多!
[root@localhost test]# xzcat hello.xz //使用xzcat查看内容
- world! 1.txt
zip命令
前面3个只能压缩文件,但是zip命令却可以压缩目录。同样zip也是没有安装的。使用yum install - y zip
[root@localhost test]# yum install -y zip
[root@localhost test]# yum install -y unzip //连带解压也一起安装了!
[root@localhost test]# ll
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 1588 10月 31 07:25 fire2.xz
-rw-r--r--. 1 root root 1802 10月 31 07:22 fire3.tar.gz
-rw-r--r--. 1 root root 72 10月 29 21:40 hello.xz
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 13 11月 1 10:06 tt.txt
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo
[root@localhost test]# zip test.zip 1/ fire2.xz fire3 hello.xz semanage.conf tt.txt www
zip warning: name not matched: fire3
adding: 1/ (stored 0%)
adding: fire2.xz (stored 0%)
adding: hello.xz (stored 0%)
adding: semanage.conf (deflated 49%)
adding: tt.txt (stored 0%)
adding: www (deflated 98%)
[root@localhost test]# ll
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 1588 10月 31 07:25 fire2.xz
-rw-r--r--. 1 root root 1802 10月 31 07:22 fire3.tar.gz
-rw-r--r--. 1 root root 72 10月 29 21:40 hello.xz
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 3901 11月 1 10:40 test.zip //这个是压缩后的文件,可以看到源文件都还在!
-rw-r--r--. 1 root root 13 11月 1 10:06 tt.txt
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo
[root@localhost test]# unzip test.zip
Archive: test.zip
replace fire2.xz? [y]es, [n]o, [A]ll, [N]one, [r]ename: n//由于源文件还在,所以解压的时候文件名会重复,所以会提示是否取代!
zip没有像zcat,bzcat,xzcat等查看命令。只有unzip -l xxoo.zip 命令来查看列表详细内容!
[root@localhost test]# unzip -l test.zip
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
0 10-29-2018 21:39 1/
1588 10-31-2018 07:25 fire2.xz
72 10-29-2018 21:40 hello.xz
2321 10-31-2018 06:41 semanage.conf
13 11-01-2018 10:06 tt.txt
8326 10-31-2018 06:55 www
--------- -------
12320 6 files
zip还可以加-r压缩目录
[root@localhost test]# ll
drwxr-xr-x. 2 root root 58 11月 1 10:46 123
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 13 11月 1 10:06 tt.txt
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo
[root@localhost test]# zip test.zip -r .
adding: xxoo (deflated 49%)
adding: semanage.conf (deflated 49%)
adding: www (deflated 98%)
adding: tt.txt (stored 0%)
adding: 123/ (stored 0%)
adding: 123/fire2.xz (stored 0%)
adding: 123/fire3.tar.gz (deflated 1%)
adding: 123/hello.xz (stored 0%)
[root@localhost test]# ll
drwxr-xr-x. 2 root root 58 11月 1 10:46 123
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 7182 11月 1 10:48 test.zip
-rw-r--r--. 1 root root 13 11月 1 10:06 tt.txt
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo
[root@localhost test]# file test.zip
test.zip: Zip archive data, at least v2.0 to extract
[root@localhost test]# ll
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 7182 11月 1 10:48 test.zip
-rw-r--r--. 1 root root 13 11月 1 10:06 tt.txt
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo
[root@localhost test]# unzip test.zip -d /tmp/ //解压到指定目录下 -d
Archive: test.zip
inflating: /tmp/xxoo
inflating: /tmp/semanage.conf
inflating: /tmp/www
extracting: /tmp/tt.txt
creating: /tmp/123/
extracting: /tmp/123/fire2.xz
inflating: /tmp/123/fire3.tar.gz
extracting: /tmp/123/hello.xz
[root@localhost test]# ll /tmp
drwxr-xr-x. 2 root root 58 11月 1 10:46 123
-rw-r--r--. 1 root root 52 11月 1 10:18 gg.txt.bz2
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 13 11月 1 10:06 tt.txt
-rw-r--r--. 1 root root 20480 11月 1 10:29 water.xz
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
-rw-r--r--. 1 root root 2321 10月 31 16:49 xxoo
tar命令
打包命令,命令格式:tar -cvf 打包后文件名 需要打包的文件
[root@localhost test]# ll
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 0 10月 31 06:39 1.txt
-rw-r--r--. 1 root root 15 10月 29 21:40 hello
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
[root@localhost test]# tar -cvf www.tar 1 1.txt hello semanage.conf
1/
1.txt
hello
semanage.conf
[root@localhost test]# ll
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 0 10月 31 06:39 1.txt
-rw-r--r--. 1 root root 15 10月 29 21:40 hello
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
-rw-r--r--. 1 root root 10240 10月 31 06:56 www.tar
[root@localhost test]# tar -tf www.tar //查看打包的文件列表!
1/
1.txt
hello
semanage.conf
[root@localhost test]# tar -xvf www.tar
1/
1.txt
hello
semanage.conf
[root@localhost test]# ll
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 0 10月 31 06:39 1.txt
-rw-r--r--. 1 root root 15 10月 29 21:40 hello
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
-rw-r--r--. 1 root root 10240 10月 31 06:56 www.tar
//使用命令tar -xvf www.tar 解包之后,源文件还在而且解压出来的文件会覆盖掉现有的文件,不会提示!所以有没有解包看不怎么出来!
[root@localhost test]# mkdir ./xixi
[root@localhost test]# ll
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 0 10月 31 06:39 1.txt
-rw-r--r--. 1 root root 15 10月 29 21:40 hello
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
-rw-r--r--. 1 root root 10240 10月 31 06:56 www.tar
drwxr-xr-x. 2 root root 6 10月 31 07:03 xixi
[root@localhost test]# tar -xvf www.tar -C ./xixi
1/
1.txt
hello
semanage.conf
[root@localhost test]# ll
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 0 10月 31 06:39 1.txt
-rw-r--r--. 1 root root 15 10月 29 21:40 hello
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
-rw-r--r--. 1 root root 10240 10月 31 06:56 www.tar
drwxr-xr-x. 3 root root 62 10月 31 07:05 xixi
[root@localhost test]# cd xixi
[root@localhost xixi]# ll
总用量 8
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 0 10月 31 06:39 1.txt
-rw-r--r--. 1 root root 15 10月 29 21:40 hello
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
//新建一个xixi目录,然后可以将www.tar解包到xixi里。可以看到源文件这些都在,只是在xixi里多了解包出来的东西!
有时候想批量打包东西,但是又有几个个别文件不想被打包,可以使用命令--exclude
[root@localhost test]# tar -cvf fire.tar .//将test里的文件批量打包!
./
./1/
./www
./1.txt
./hello
./semanage.conf
./xixi/
./xixi/1/
./xixi/1.txt
./xixi/hello
./xixi/semanage.conf
tar: ./fire.tar: 文件是归档文件;未输出
[root@localhost test]# ll
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 0 10月 31 06:39 1.txt
-rw-r--r--. 1 root root 30720 10月 31 07:13 fire.tar //打包之后的fire.tar文件
-rw-r--r--. 1 root root 15 10月 29 21:40 hello
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
drwxr-xr-x. 3 root root 62 10月 31 07:05 xixi
[root@localhost test]# tar -tf fire.tar
./
./1/
./www
./1.txt
./hello
./semanage.conf
./xixi/
./xixi/1/
./xixi/1.txt
./xixi/hello
./xixi/semanage.conf
[root@localhost test]# mkdir /test1
[root@localhost test]# mv fire.tar /test1
[root@localhost test]# tar -cvf . --exclude hello --exclude xixi
tar: 谨慎地拒绝创建空归档文件
请用“tar --help”或“tar --usage”获得更多信息。
[root@localhost test]# tar -cvf fire2 . --exclude hello --exclude xixi //hello 和 xixi不打包!其他都打包
./
./1/
./www
./1.txt
./semanage.conf
tar: ./fire2: 文件是归档文件;未输出
[root@localhost test]# tar -tf fire2
./
./1/
./www
./1.txt
./semanage.conf
[root@localhost test]# tar -tf /test1/fire.tar
./
./1/
./www
./1.txt
./hello
./semanage.conf
./xixi/
./xixi/1/
./xixi/1.txt
./xixi/hello
./xixi/semanage.conf //通过tar -tf 可以看到2个打包里的文件列表是不一样的!
tar命令搭配压缩命令!通过上面的例子可以看到打包之后的文件非常大,所以我们还要对文件进行压缩。而我们基本上都是在打包的时候直接进行压缩手续。
[root@localhost test]# tar -zcvf fire3.tar.gz .
./
./1/
./www
./1.txt
./hello
./semanage.conf
./xixi/
./xixi/1/
./xixi/1.txt
./xixi/hello
./xixi/semanage.conf
[root@localhost test]# ll
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 0 10月 31 06:39 1.txt
-rw-r--r--. 1 root root 20480 10月 31 07:25 fire2
-rw-r--r--. 1 root root 1802 10月 31 07:22 fire3.tar.gz
-rw-r--r--. 1 root root 15 10月 29 21:40 hello
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
drwxr-xr-x. 3 root root 62 10月 31 07:05 xixi
可以看到fire2 和fire3.tar.gz大小差别很大。fire3在打包的时候就进行了压缩。所以出来的结果逼fire2小很多! 然后可以是用命令 tar -zxvf fire3.tar.gz进行解压和解包
[root@localhost test]# mkdir hehe
[root@localhost test]# ll
总用量 44
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 0 10月 31 06:39 1.txt
-rw-r--r--. 1 root root 20480 10月 31 07:25 fire2
-rw-r--r--. 1 root root 1802 10月 31 07:22 fire3.tar.gz
drwxr-xr-x. 2 root root 6 10月 31 07:31 hehe
-rw-r--r--. 1 root root 15 10月 29 21:40 hello
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
drwxr-xr-x. 3 root root 62 10月 31 07:05 xixi
[root@localhost test]# tar -zxvf fire3.tar.gz ./hehe
tar: ./hehe:归档中找不到
[root@localhost test]# tar -zxvf fire3.tar.gz -C ./hehe //解压包到指定目录需加选项-C
./
./1/
./www
./1.txt
./hello
./semanage.conf
./xixi/
./xixi/1/
./xixi/1.txt
./xixi/hello
./xixi/semanage.conf
[root@localhost test]# ll hehe
总用量 20
drwxr-xr-x. 2 root root 6 10月 29 21:39 1
-rw-r--r--. 1 root root 0 10月 31 06:39 1.txt
-rw-r--r--. 1 root root 15 10月 29 21:40 hello
-rw-r--r--. 1 root root 2321 10月 31 06:41 semanage.conf
-rw-r--r--. 1 root root 8326 10月 31 06:55 www
drwxr-xr-x. 3 root root 62 10月 31 07:05 xixi
同样的也有tar配合bzip2的选项
tar
- zcvf 对应的是gzip
- zxvf 对应的是gunzip
- jcvf 对应的是bzip2
- jxvf 对应的是bunzip2
- Jcvf 对应的是xz
- Jxvf 对应的是xz -d
来源:oschina
链接:https://my.oschina.net/u/3997678/blog/2336970