压缩解压缩 笔记

本小妞迷上赌 提交于 2020-12-18 09:43:23

知识点 压缩与打包

命令: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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!