且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩

更新时间:2022-10-03 14:19:07

- 6.5 zip压缩工具

- 6.6 tar打包

- 6.7 打包并压缩




#  6.5 zip压缩工具


- zip压缩工具可以压缩目录


- 压缩目录需要用zip -r

```

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  2.txt.zip  3.txt  4.txt  aminglinux

[root@aminglinux-01 d6z]# zip -r aming.zip 3.txt aminglinux

  adding: 3.txt (deflated 74%)

  adding: aminglinux/ (stored 0%)

  adding: aminglinux/4.txt (deflated 74%)

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  2.txt.zip  3.txt  4.txt  aminglinux  aming.zip

[root@aminglinux-01 d6z]# du -sh aming.zip

664K aming.zip


```


- zip有个特点,压缩完了之后,原来的文件不删除,不像前面三个个工具(gzip 、bzip2、xz),压缩完后 之前的文件就消失了


- zip解压缩 命令用 unzip 没有命令,用yum命令安装下


```

[root@aminglinux-01 d6z]# unzip

-bash: unzip: 未找到命令

[root@aminglinux-01 d6z]# yum install -y unzip

已加载插件:fastestmirror


已安装:

  unzip.x86_64 0:6.0-16.el7                                                                                  


完毕!

[root@aminglinux-01 d6z]# unzip aming.zip

Archive:  aming.zip

replace 3.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: n

replace aminglinux/4.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y

  inflating: aminglinux/4.txt        

[root@aminglinux-01 d6z]# 

```

- 因为zip压缩不会删除原来的文件,所以解压缩的时候 就会重复,解压缩的时候就会问是否覆盖原来的文件可以选择 y yes,或者 n no,A就是全部都yes


- unzip解压 也可以指定 到一个目录下去

使用umzip -d 到指定目录

```

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  2.txt.zip  3.txt  4.txt  aminglinux  aming.zip

[root@aminglinux-01 d6z]# mkdir test

[root@aminglinux-01 d6z]# unzip 2.txt.zip -d test/

Archive:  2.txt.zip

  inflating: test/2.txt              

[root@aminglinux-01 d6z]# 

```

- unzip解压 能不能指定文件名字呢?

答案是不会的,即使指定了也会自动先生成一个目录,把解压文件放到这个目录下


```

[root@aminglinux-01 d6z]# mkdir test

[root@aminglinux-01 d6z]# unzip 2.txt.zip -d test/

Archive:  2.txt.zip

  inflating: test/2.txt              

[root@aminglinux-01 d6z]# unzip 2.txt.zip -d test/aa.txt

Archive:  2.txt.zip

  inflating: test/aa.txt/2.txt       

[root@aminglinux-01 d6z]#

```

- 解压出来还是2.txt,也就是说压缩之前是什么样的文件名,压缩之后还是什么样的文件名 ,解压之后,不能改.




- zip的压缩包是没办法查看压缩内容的,和之前三个压缩工具那样的 查看文件的 zcat bzcat xzcat   cat工具,zip就没有这样的工具

- 唯一可以看得是查看压缩包里面的文件列表看不了文件内容,

命令unzip -l aming.zip

```

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  2.txt.zip  3.txt  4.txt  aminglinux  aming.zip  test

[root@aminglinux-01 d6z]# unzip -l aming.zip

Archive:  aming.zip

  Length      Date    Time    Name

---------  ---------- -----   ----

  1282425  08-07-2017 21:46   3.txt

        0  08-07-2017 23:17   aminglinux/

  1282425  08-07-2017 23:17   aminglinux/4.txt

---------                     -------

  2564850                     3 files

[root@aminglinux-01 d6z]# 

```


# 6.6 tar 打包工具


![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170808/215957728.png?imageslim)

1. 带宽100兆  指的是比特  理论速度 12.5M每秒单位是 字节  1字节=8比特

2. 打包可能会减小文件的大小,也不是绝对的

```

[root@aminglinux-01 ~]# cd /tmp

[root@aminglinux-01 tmp]# cd d6z

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  2.txt.zip  3.txt  4.txt  aminglinux  aming.zip  test

[root@aminglinux-01 d6z]# tar -cvf aminglinux.tar aminglinux/

aminglinux/

aminglinux/4.txt

[root@aminglinux-01 d6z]# tar -cf aminglinux.tar aminglinux/

不加V 就没有过程 ,如果再打包一次就把之前的打包的覆盖了

[root@aminglinux-01 d6z]# ls

1.txt.bz2  2.txt  2.txt.zip  3.txt  4.txt  aminglinux  aminglinux.tar  aming.zip  test

[root@aminglinux-01 d6z]# 

tar解包,解包也会把之前的文件覆盖

[root@aminglinux-01 d6z]# tar -xvf aminglinux.tar

aminglinux/

aminglinux/4.txt

[root@aminglinux-01 d6z]# 

tar不仅可以打包目录,也可以目录 文件一起打包

[root@aminglinux-01 d6z]# tar -cvf aminglinux.tar aminglinux 3.txt 4.txt

aminglinux/

aminglinux/4.txt

3.txt

4.txt

[root@aminglinux-01 d6z]# 


怎么查看打包里的文件呢?用tar -tf 查看

[root@aminglinux-01 d6z]# tar -tf aminglinux.tar

aminglinux/

aminglinux/4.txt

3.txt

4.txt

[root@aminglinux-01 d6z]#


tar还有一个比较有用的选项,--exclude 可以过滤一个文件,不去打包它

下面来过滤所有的txt文件


[root@aminglinux-01 d6z]# tar -tf aminglinux.tar

aminglinux/

aminglinux/4.txt

3.txt

4.txt

[root@aminglinux-01 d6z]# tar -cvf aminglinux.tar --exclude "*.txt" aminglinux 3.txt 4.txt

aminglinux/

[root@aminglinux-01 d6z]# 

给txt的文件过滤了 需要加上“” 双引号


下面过滤掉aminglinux文件

[root@aminglinux-01 d6z]# tar -cvf aminglinux.tar --exclude aminglinux  aminglinux 3.txt 4.txt

3.txt

4.txt

[root@aminglinux-01 d6z]# 

```


# 6.7 tar打包并压缩


![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170808/222136596.png?imageslim)

```

普通打包 

[root@aminglinux-01 d6z]# tar -cvf aminglinux.tar aminglinux 3.txt 4.txt

aminglinux/

aminglinux/4.txt

3.txt

4.txt

```

- [x] tar打包并且把文件用zip压缩文件 使用命令 tar -zcvf


```

[root@aminglinux-01 d6z]# tar -zcvf aminglinux.tar.gz aminglinux 3.txt 4.txt

aminglinux/

aminglinux/4.txt

3.txt

4.txt

[root@aminglinux-01 d6z]# du -sh aminglinux.tar.gz

992K aminglinux.tar.gz


使用gzip 压缩 只有992k了,本来大小加起来3.9M


[root@aminglinux-01 d6z]# du -sh aminglinux 3.txt 4.txt

1.3M aminglinux

1.3M 3.txt

1.3M 4.txt

```


- [x] tar打包并且把文件用bzip2压缩  使用命令tar -jcvf


```

[root@aminglinux-01 d6z]# tar -jcvf aminglinux.tar.bz2 aminglinux 3.txt 4.txt

aminglinux/

aminglinux/4.txt

3.txt

4.txt

[root@aminglinux-01 d6z]# du -sh aminglinux.tar.bz2

392K aminglinux.tar.bz2

```

bzip2 压缩又狠了一些



- [x] tar打包并且把文件用xz压缩  使用命令 tar -Jcvf

 

```

[root@aminglinux-01 d6z]# tar -Jcvf aminglinux.tar.xz aminglinux 3.txt 4.txt

aminglinux/

aminglinux/4.txt

3.txt

4.txt

[root@aminglinux-01 d6z]# du -sh aminglinux.tar.xz

60K aminglinux.tar.xz


最恨xz压缩成了60k

[root@aminglinux-01 d6z]# 


```



- [x] 使用tar -tf 查看打包压缩包文件,甚至tar包 不压缩也是这样看

```

[root@aminglinux-01 d6z]# tar -tf aminglinux.tar.gz

aminglinux/

aminglinux/4.txt

3.txt

4.txt

[root@aminglinux-01 d6z]# tar -tf aminglinux.tar.bz2

aminglinux/

aminglinux/4.txt

3.txt

4.txt

[root@aminglinux-01 d6z]# tar -tf aminglinux.tar.xz

aminglinux/

aminglinux/4.txt

3.txt

4.txt

[root@aminglinux-01 d6z]# 

```


- [x] 打包并且解压 命令把上面 打包tar -cvf   改成 tar -xvf 解压


打包并且解压zip文件 tar -zxvf aminglinux.gz


打包并且解压bz2文件 tar -jxvf aminglinux.bz2


打包并且解压xz文件  tar -Jxvf aminglinux.xz






## 扩展


查看网址 http://ask.apelearn.com/question/5435



本文转自   ch71smas   51CTO博客,原文链接:http://blog.51cto.com/ch71smas/1959435