一、zip压缩工具

zip 1.txt.zip 1.txt    //压缩文件

zip -r 123.zip 123/   //压缩目录

unzip 1.txt.zip //解压

unzip 123.zip -d /root/456/ //解压文件,并指定解压到那个目录下

不能查看压缩文件的内容,只能查看内容列表

unzip -l 123.zip //查看压缩文件的内容列表

zip压缩文件后,源文件不消失

需要安装zip包

[root@docker02]# zip 1.txt.zip 1.txt

-bash: zip: 未找到命令

[root@docker02]# yum install -y zip

使用zip工具压缩文件1.txt文件。

[root@docker02]# zip 1.txt.zip 1.txt

  adding: 1.txt (deflated 74%)

[root@docker02]# ls

1.txt  1.txt.zip  2.txt  3.txt  4.txt  test

[root@docker02]# du -sh 1.txt.zip

664K1.txt.zip

使用zip工具压缩目录test

[root@docker02]# zip -r test.zip test

  adding: test/ (stored 0%)

  adding: test/3.txt (deflated 74%)

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

[root@docker02]# ls

1.txt  1.txt.zip  2.txt  3.txt  4.txt  test  test.zip

[root@docker02]# du -sh test.zip

1.3M test.zip

[root@docker02]# du -sh test

5.0M  test

解压压缩文件

[root@docker02]# unzip 1.txt.zip

-bash: unzip: 未找到命令

[root@docker02]# yum install -y unzip

[root@docker02]# unzip 1.txt.zip

Archive:  1.txt.zip

replace 1.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: A   //A表示全部覆盖,N表示全部不覆盖

  inflating: 1.txt

[root@docker02]# ls

1.txt  1.txt.zip  2.txt  3.txt  4.txt  test  test.zip

[root@docker02]# unzip test.zip

Archive:  test.zip

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

  inflating: test/3.txt

  inflating: test/4.txt

指定解压文件路径

[root@docker02]# unzip  test.zip  -d  /tmp/test

Archive:  test.zip

   creating: /tmp/test/test/

  inflating: /tmp/test/test/3.txt

  inflating: /tmp/test/test/4.txt

[root@docker02]# ls /tmp/test

333  test  test1  test2

查看压缩文件内容列表

[root@docker02]# unzip -l test.zip

Archive:  test.zip

  Length      Date    Time    Name

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

        0  11-12-2020 21:34   test/

  2572100  11-12-2020 22:30   test/3.txt

  2572100  11-12-2020 22:31   test/4.txt

二、tar打包

tar本身是一个打包工具,可以把目录打包成一个文件,它把所有的文件整合成一个大文件,方便复制或者移动。

命令格式:tar [-zjxcvfpP] filename.tar

tar打包或解包均会直接覆盖原文件和目录,不会提示覆盖信息

tar参数

-z表示同时使用gzip压缩

-j表示同时用bzip压缩

-J表示同时用xz压缩

-c表示建立一个tar包或者压缩文件包

-x表示解包或者解压

-v表示可视化

-f后面跟文件名(-f filename,表示压缩后的文件名为filename)注意:如果多个参数组合的情况下,-f要写在最后面。

-t表示查看tar包里的文件

--exclude filename 表示在打包或压缩时,不要将某个文件不包含在里面。

打包或者解包,源文件都存在。

打包后产生的文件与打包前的文件在同一目录下。

tar使用方法:

tar -cvf 123.tar 123 // 打包目录123

tar -cvf hahashen.tar 1.txt 123 //打包目录123和文件1.txt

tar -xvf hahashen.tar //解包

tar -tf hahashen.tar //查看打包文件

tar -cvf hahashen.tar --exclude 1.txt --exclude 2 123 //打包目录123,但不包括文件1.txt和2

打包目录test和文件1.txt,2.txt

[root@docker02]# tar -cvf test.tar test 1.txt 2.txt

test/

test/3.txt

test/4.txt

1.txt

2.txt

[root@docker02]# ls

1.txt  1.txt.zip  2.txt  3.txt  4.txt  test  test.tar  test.zip


打包目录test和文件1.txt 2.txt ,但是不包含文件3.txt

[root@docker02]# tar -cvf test.tar --exclude 3.txt  test 1.txt 2.txt

test/

test/4.txt

1.txt

2.txt

三、打包并压缩

tar 命令还可以在打包的同时支持gzip压缩,bzip压缩和xz压缩

打包并压缩的使用方法:

tar -zcvf 123.tar.gz 123

tar -zxvf 123.tar.gz

tar -jcvf 123.bz2 123

tar -jxvf 123.bz2

tar -Jcvf 123.xz 123

tar -Jxvf 123.xz

tar -tf 123.bz2 / tar -tf 123.gz / tar -tf 123.xz

打包目录test以及文件1.txt和2.txt并使用gzip压缩

[root@docker02]# tar -zcvf test.tar.gz test 1.txt 2.txt

test/

test/3.txt

test/4.txt

1.txt

2.txt

[root@docker02]# ls

1.txt  1.txt.zip  2.txt  3.txt  4.txt  test  test.tar  test.tar.gz  test.zip

查看压缩文件

[root@docker02]# tar -tf test.tar.gz

test/

test/3.txt

test/4.txt

1.txt

2.txt

解压   

[root@docker02]# tar -zxvf test.tar.gz

test/

test/3.txt

test/4.txt

1.txt

2.txt

文件并使用bzip2压缩

[root@docker02]# tar -jcvf test.tar.bz2 test 1.txt 2.txt

test/

test/3.txt

test/4.txt

1.txt

2.txt

解压  

[root@docker02]# tar -jxvf test.tar.bz2

test/

test/3.txt

test/4.txt

1.txt

2.txt