2018.8.9日,直播笔记,压缩和打包

一.压缩打包介绍

  • 使用压缩工具的好处:

使用压缩文件,不仅可以节省磁盘空间,而且在传输时还能节省网络宽带。

我们通常讲的家用宽带和机房宽带100M是有区别的:

机房宽带的上行和下行都是100M,所以价格昂贵,家用宽带下行是100M,但是上行往往只有10M-20M

linux下最常见的压缩文件是tar.gz格式,还有zip,gz,bz2,xz,tar.gz,tar.xz等

  1. gz表示由gzip压缩工具压缩的文件。
  2. bz2表示由bzip2压缩工具压缩的文件。
  3. tar表示由tar打包程序打包的文件(tar没有压缩功能,只是把一个目录合并成一个文件)
  4. tar.gz先打包,在由gzip压缩
  5. tar.bz2先打包,在由bzip2压缩
  6. tar.xz先打包,在由xz压缩

二. gzip压缩工具

  • 格式:gzip [参数] filename

          gzip -d是解压缩。

  1. gzip-# filename     //#范围1-9,默认6
  2. gzip不能压缩目录
  3. gzip filename 压缩文件,暂不支持压缩目录,压缩后源文件消失
  4. gzip-d filename.gz 解压文件,解压后,源压缩文件消失
  5. gunzip filename.gz 解压文件, 解压后,源压缩文件消失
  6. gzip–c filename > /tmp/filename.gz指定压缩文件路径,并且源文件存在
  7. gzip–d –c /tmp/filename.gz > /目录/filename 解压文件到那个路径下,并且源压缩文件存在。
  8. gzip–c /tmp/filename.gz > /目录/filename 解压文件到那个路径下,并且源压缩文件存在。
  9. zcat 1.txt.gz 查看.gz文件
  10. file /tmp/1.txt.gz 查看文件的属性

例子:查找/etc/下后缀为.conf的文件,并将它的内容追加到文件1.txt中,并且压缩它,然后再解压。

[root@linux-151 d6z]# find /etc/ -type f -name "*.conf" -exec cat {} >>1.txt \;

[root@linux-151 d6z]# du -sh 1.txt 4.0M 1.txt     

 //这里要注意一下,这个大小不太准确,这里多次追加会看到文件,du -sh 1.txt查看的文件数值不同,但在多次查看,文件大小会恢复正常。(跳转数值较大比,是因为这个文件本身存在很多空隙,最后在压缩并解压后,会发现大小会有不同)

[root@linux-151 d6z]# gzip 1.txt

[root@linux-151 d6z]# du -sh 1.txt.gz 664K 1.txt.gz

[root@linux-151 d6z]# gzip -d 1.txt.gz

[root@linux-151 d6z]# du -sh 1.txt 2.5M 1.txt

[root@linux-151 d6z]# gzip 1.txt

[root@linux-151 d6z]# du -sh 1.txt.gz 664K 1.txt.gz

[root@linux-151 d6z]# gunzip  1.txt.gz

[root@linux-151 d6z]# du -sh 1.txt 2.5M 1.txt

  • 1.txt,并且将压缩文件放到/tmp/下

[root@linux-151 d6z]# gzip -c 1.txt > /tmp/1.txt.gz

[root@linux-151 d6z]# ls 1.txt

[root@linux-151 d6z]# ls /tmp/1.txt.gz /tmp/1.txt.gz

[root@linux-151 d6z]# du -sh /tmp/1.txt.gz 664K /tmp/1.txt.gz

  • 1.txt.gz ,存放到当前目录下,命名为2.txt

[root@linux-151 d6z]# gzip -d -c /tmp/1.txt.gz > ./2.txt

[root@linux-151 d6z]# ls 1.txt  2.txt

[root@linux-151 d6z]# wc -l 1.txt 2.txt  64790 1.txt  64790 2.txt 129580 总用量

[root@linux-151 d6z]# du -sh 1.txt 2.txt 2.5M 1.txt 2.5M 2.txt

[root@linux-151 d6z]# ls /tmp/1.txt.gz /tmp/1.txt.gz

  • 1.txt.gz的内容,因为内容比较多,这里就不粘贴出来了。

[root@linux-151 d6z]# zcat /tmp/1.txt.gz

  1. file /tmp/1.txt.gz 查看属性,

[root@linux-151 d6z]# file /tmp/1.txt.gz /tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Thu Nov  9 20:33:33 2018   /tmp/1.txt.gz 压缩数据是1.txt,基于unix平台,最后修改时间是2018416日星期一

三.bzip2压缩工具

  • bzip命令的格式:bzip2 [-dz] filename
  • 压缩文件时加不加-z都一样,-d 解压缩。

bzip比gzip压缩更小,所耗费的CPU资源也最大(压缩的文件也是最小的)

  1. bzip2 1.txt / bzip2 -z 1.txt //压缩文件
  2. bzip2 -d 1.txt.bz2 / bunzip2 1.txt.bz2 //解压文件
  3. bzip2 -# 1.txt //#范围1-9,默认9
  4. bzcat 1.txt.bz2 //查看压缩文件
  5. bzip2 -c 1.txt > /root/1.txt.bz2 //指定压缩文件路径,并且源文件存在
  6. bzip2 -c -d /root/1.txt.bz2 > /tmp/1.txt.new2 //解压文件到指定路径下,并且源压缩文件存在
  7. file 1.txt.bz2 查看文件属性

 

  • 第一次使用bzip2命令时提示没有这个命令,我们用yum安装一下

[root@linux-151 d6z]# bzip2 1.txt -bash: bzip2: 未找到命令

[root@linux-151 d6z]# yum install -y bzip2

  • 压缩文件1.txt

[root@linux-151 d6z]# bzip2 1.txt

[root@linux-151 d6z]# ls 1.txt.bz2  2.txt

  • 解压文件1.txt.gz

[root@linux-151 d6z]# bzip2 -d 1.txt.bz2

[root@linux-151 d6z]# ls 1.txt  2.txt

  • 压缩文件 1.txt,压缩文件并且指定路径,源文件存在

[root@linux-151 d6z]# bzip2 -c 1.txt > /tmp/1.txt.bz2

[root@linux-151 d6z]# ls /tmp/1.txt.bz2 /tmp/1.txt.bz2

[root@linux-151 d6z]# ls 1.txt  2.txt

  • 解压文件 1.txt.bz2,并且指定路径重名命为3.txt,源文件存在。

[root@linux-151 d6z]# bzip2 -d -c /tmp/1.txt.bz2  > ./3.txt

[root@linux-151 d6z]# ls 1.txt  2.txt  3.txt

[root@linux-151 d6z]# ls /tmp/1.txt.bz2 /tmp/1.txt.bz2

  • 查看压缩文件1.txt.bz2 内容

[root@linux-151 d6z]# bzcat /tmp/1.txt.bz2

  • 查看文件 1.txt.bz2的属性。

[root@linux-151 d6z]# file /tmp/1.txt.bz2 /tmp/1.txt.bz2: bzip2 compressed data, block size = 900k //bzip2压缩数据,大小为900k

四. xz压缩工具

  • xz命令格式:xz[-zd] filename 压缩文件加不加-z都可以,-d解压缩。
  • xz压缩文件比bzip2更小,所耗费的CPU资源也最大(压缩的文件也是最小的)
  1. xz 1.txt / xz -z 1.txt //压缩文件
  2. xz -d 1.txt.xz / unxz 1.txt.xz //解压缩文件
  3. xz -# 1.txt //#范围1-9,默认9
  4. xzcat 1.txt.xz //查看压缩文件内容
  5. xz -c 1.txt > /root/1.txt.xz //指定压缩文件路径,并且源文件存在
  6. xz -d -c /root/1.txt.xz > 1.txt.new3 //解压文件到指定路径下,并且源压缩文件存在
  7. file 1.txt.xz查看文件属性

 

  • 压缩文件1.txt

root@linux-151 d6z]# xz 1.txt

[root@linux-151 d6z]# ls 1.txt.xz  2.txt  3.txt

  • 解压文件1.txt.xz

[root@linux-151 d6z]# xz -d 1.txt.xz

[root@linux-151 d6z]# ls 1.txt  2.txt  3.txt

  • 压缩文件1.txt,并且指定路径,源文件存在

[root@linux-151 d6z]# xz -c 1.txt > /tmp/1.txt.xz

[root@linux-151 d6z]# ls 1.txt  2.txt  3.txt

[root@linux-151 d6z]# ls /tmp/1.txt.xz /tmp/1.txt.xz

  • 解压文件 1.txt.bz2,并且指定路径重名命为4.txt,源文件存在。

[root@linux-151 d6z]# xz -d -c /tmp/1.txt.xz > ./4.txt

[root@linux-151 d6z]# ls 1.txt  2.txt  3.txt  4.txt

root@linux-151 d6z]# ls /tmp/1.txt.xz /tmp/1.txt.xz

  • file 1.txz.xz 查看文件属性

[root@linux-151 d6z]# file /tmp/1.txt.xz /tmp/1.txt.xz: XZ compressed data  //xz压缩数据。

  • xz<bz2<gz ,说明xz压缩更严谨,但是所耗费cpu资源最大。

[root@linux-151 d6z]# du -sh /tmp/1.txt.gz /tmp/1.txt.bz2 /tmp/1.txt.xz 664K /tmp/1.txt.gz 260K /tmp/1.txt.bz2 60K /tmp/1.txt.xz

 

五. zip压缩工具

  1. zip txt.zip 1.txt    //压缩文件
  2. zip -r 123.zip 123/   //压缩目录
  3. unzip 1.txt.zip //解压
  4. unzip 123.zip -d /root/456/ //解压文件,并指定解压到那个目录下
  5. unzip -l 123.zip //查看压缩文件的内容列表
  6. zip压缩文件后,源文件不消失
  • 需要安装zip包

[root@linux-151 d6z]# zip 1.txt.zip 1.txt -bash: zip: 未找到命令

[root@linux-151 d6z]# yum install -y zip

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

[root@linux-151 d6z]# zip 1.txt.zip 1.txt  adding: 1.txt (deflated 74%)

[root@linux-151 d6z]# ls 1.txt  1.txt.zip  2.txt  3.txt  4.txt  test

[root@linux-151 d6z]# du -sh 1.txt.zip 664K 1.txt.zip

  • 使用zip工具压缩目录test

[root@linux-151 d6z]# zip -r test.zip test  adding: test/ (stored 0%)  adding: test/3.txt (deflated 74%)  adding: test/4.txt (deflated 74%)

[root@linux-151 d6z]# ls 1.txt  1.txt.zip  2.txt  3.txt  4.txt  test  test.zip

[root@linux-151 d6z]# du -sh test.zip 1.3M test.zip

[root@linux-151 d6z]# du -sh test 5.0M test

  • 解压压缩文件

[root@linux-151 d6z]# unzip 1.txt.zip -bash: unzip: 未找到命令

[root@linux-151 d6z]# yum install -y unzip

[root@linux-151 d6z]# 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@linux-151 d6z]# ls 1.txt  1.txt.zip  2.txt  3.txt  4.txt  test  test.zip

[root@linux-151 d6z]# 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@linux-151 d6z]# 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@linux-151 d6z]# ls /tmp/test 333  test  test1  test2

  • 查看压缩文件内容列表

[root@linux-151 d6z]# unzip -l test.zip Archive:  test.zip  Length      Date    Time    Name ---------  ---------- -----   ----        0  04-17-2018 21:34   test  2572100  04-17-2018 21:33   test/3.txt  2572100  04-17-2018 21:34   test/4.txt

六.tar打包​​​

  • tar 本身是一个打包工具,可以把目录打包成一个文件,它把所有的文件整合成一个大文件,方便复制或者移动
  • 命令格式:tar [-z j x c v f p P]filename.tar
  • tar 打包或解包会直接覆盖源文件和目录,不会提示覆盖信息

tar参数

  1. -z表示同时使用gzip压缩
  2. -j表示同时用bzip压缩

  3. -J表示同时用xz压缩

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

  5. -x表示解包或者解压

  6. -v表示可视化

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

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

 

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

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

  • tar使用方法: 
  1. tar -cvf 123.tar 123 // 打包目录123
  2. tar -cvf aming.tar 1.txt 123 //打包目录123和文件1.txt
  3. tar -xvf aming.tar //解包
  4. tar -tf aming.tar //查看打包文件
  5. tar -cvf aming.tar --exclude 1.txt --exclude 2 123 //打包目录123,单不包括文件1.txt和2
  • 打包目录test和文件1.txt,2.txt

[root@linux-151 d6z]# tar -cvf test.tar test 1.txt 2.txt test test/3.txt test/4.txt 1.txt 2.txt

[root@linux-151 d6z]# ls 1.txt  1.txt.zip  2.txt  3.txt  4.txt  test  test.tar  test.zip

  • 查看打包文件test.tar的内容

[root@linux-151 d6z]# tar -tf test.tar test test/3.txtJ

test/4.txt 1.txt 2.txt

  • 解包文件test.tar

[root@linux-151 d6z]# tar -xvf test.tar test test/3.txt test/4.txt 1.txt 2.txt

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

[root@linux-151 d6z]# tar -cvf test.tar --exclude 3.txt  test 1.txt 2.txt test test/4.txt 1.txt 2.txt

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

[root@linux-151 d6z]# tar -cvf test.tar --exclude 3.txt --exclude 4.txt  test 1.txt 2.txt test 1.txt 2.txt

七. 打包并压缩

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

打包并压缩的使用方法:

  1. tar -zcvf 123.tar.gz 123
  2. tar -zxvf 123.tar.gz
  3. tar -jcvf 123.bz2 123
  4. tar -jxvf 123.bz2
  5. tar -Jcvf 123.xz 123
  6. tar -Jxvf 123.xz
  7. tar -tf 123.bz2 / tar -tf 123.gz / tar -tf 123.xz
  • 打包目录test以及文件1.txt和2.txt并使用gzip压缩

[root@linux-151 d6z]# tar -zcvf test.tar.gz test 1.txt 2.txt test test/3.txt test/4.txt 1.txt 2.txt

[root@linux-151 d6z]# ls 1.txt  1.txt.zip  2.txt  3.txt  4.txt  test  test.tar  test.tar.gz  test.zip

  • 查看打包文件

[root@linux-151 d6z]# tar -tf test.tar.gz test test/3.txt test/4.txt 1.txt 2.txt

解包    

[root@linux-151 d6z]# tar -zxvf test.tar.gz test test/3.txt test/4.txt 1.txt 2.txt

  • 打包文件并使用bzip2压缩

[root@linux-151 d6z]# tar -jcvf test.tar.bz2 test 1.txt 2.txt test test/3.txt test/4.txt 1.txt 2.txt

解包    

[root@linux-151 d6z]# tar -jxvf test.tar.bz2 test test/3.txt test/4.txt 1.txt 2.txt

  • 打包文件并使用xz压缩

[root@linux-151 d6z]# tar -Jcvf test.tar.xz test 1.txt 2.txt test test/3.txt test/4.txt 1.txt 2.txt

解包    

[root@linux-151 d6z]# tar -Jxvf test.tar.xz test test/3.txt test/4.txt 1.txt 2.txt

  • 查看打包文件

[root@linux-151 d6z]# tar tf test.tar.xz test test/3.txt test/4.txt 1.txt 2.txt

[root@linux-151 d6z]# du -sh test.tar.gz test.tar.bz2 test.tar.xz 2.6M test.tar.gz 988K test.tar.bz2 64K test.tar.xz

注意:打包后文件越小,耗时越长,占用cpu资源越多。

转载于:https://my.oschina.net/u/3912766/blog/1926036

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值