Linux之压缩打包

gzip

  • 语法:gzip filename

  • 压缩级别1-9,1最低,9最高。默认为6

  • 默认后缀名为`.gz

  • 不能压缩目录

  • 压缩后不保留源文件

实例如下:

  • 创建目录/tmp/d6zsy/
[root@zyxlinux01 tmp]# mkdir d6zsy
[root@zyxlinux01 tmp]# ls
1.txt  d6zsy  ks-script-MZSNDs  yum.log  zyxml

  • 新建文件zyx.txt
[root@zyxlinux01 d6zsy]# find /etc/ -type f -name "*.conf" -exec cat {} >> zyx.txt \;
[root@zyxlinux01 d6zsy]# du -sh zyx.txt
1.9M	zyx.txt
[root@zyxlinux01 d6zsy]# wc -l zyx.txt
32103 zyx.txt

du -sh zyx.txt:查看文件大小1.9M

wc -l zyx.txt:查看文件行数32103行

  • gzip zyx.txt:对zyx.txt进行压缩
[root@zyxlinux01 d6zsy]# gzip zyx.txt
[root@zyxlinux01 d6zsy]# ls
zyx.txt.gz
[root@zyxlinux01 d6zsy]# du -sh zyx.txt.gz
320K	zyx.txt.gz

压缩后,文件名为"zyx.txt.gz"大小变成了320K

file filename.gz:查看文件本身信息

zcat fileneme.gz:查看文件内容

  • gzip -d filename.gz gunzip filename.gz:解压文件
[root@zyxlinux01 d6zsy]# gzip -d zyx.txt.gz
[root@zyxlinux01 d6zsy]# ls
zyx.txt
[root@zyxlinux01 d6zsy]# du -sh zyx.txt
1.2M	zyx.txt
  • gzip -c zyx.txt > /tmp/zyx.txt.gz
[root@zyxlinux01 d6zsy]# ls
zyx.txt
[root@zyxlinux01 d6zsy]# gzip -c zyx.txt > /tmp/zyx.txt.gz
[root@zyxlinux01 d6zsy]# ls
zyx.txt
[root@zyxlinux01 d6zsy]# ls /tmp
1.txt  d6zsy  ks-script-MZSNDs  yum.log  zyxml  zyx.txt.gz

保留源文件,且将"zyx.txt"压缩为"zyx.txt.gz"并保存在/tmp/下

  • gzip -d -c /tmp/zyx.txt.gz > /tmp/d6zsy/10zyx.txt
[root@zyxlinux01 d6zsy]# gzip -d -c /tmp/zyx.txt.gz > /tmp/d6zsy/10zyx.txt
[root@zyxlinux01 d6zsy]# ls
10zyx.txt  zyx.txt
[root@zyxlinux01 d6zsy]# du -sh 10zyx.txt zyx.txt
1.2M	10zyx.txt
1.2M	zyx.txt

保留源文件,且将"zyx.txt.gz"解压到"/tmp/d6zsy/"下,并更名为"10zyx.txt"。


bzip2

  • 用法与gzip基本一样

  • 默认压缩级别为9

  • 默认后缀名为".bz2"

  • 查看文件内容命令 "bzcat filename.bz2"

  • 不支持压缩目录


xz

  • 用法与"gzip" "bzip2" 基本一样

  • 默认压缩级别为6

  • 默认后缀名为 ".xz"

  • 查看文件内容命令 "xzcat filename.xz"

  • 不支持压缩目录


zip

  • 压缩后会保留源文件目录

  • 压缩后的文件不能直接查看

实例如下:

  • 准备一个目录
[root@zyxlinux01 tmp]# tree
.
├── 1.txt
├── d6zsy
│?? ├── 10zyx.txt
│?? ├── 11.txt
│?? └── zyx.txt
├── ks-script-MZSNDs
├── yum.log
├── zyxml
│?? ├── 11.txt.gz
│?? ├── 1.txt
│?? ├── 20.txt
│?? ├── zyx1
│?? │?? └── d6zsy
│?? │??     ├── 10zyx.txt
│?? │??     └── zyx.txt
│?? ├── zyx2
│?? └── zyx3
└── zyx.txt
  • 压缩文件:zip filename.zip filename
[root@zyxlinux01 tmp]# du -sh zyx.txt
1.2M	zyx.txt
[root@zyxlinux01 tmp]# zip zyx.txt.zip zyx.txt
  adding: zyx.txt (deflated 72%)
[root@zyxlinux01 tmp]# du -sh zyx.txt.zip
320K	zyx.txt.zip
[root@zyxlinux01 tmp]# tree
.
├── 1.txt
├── d6zsy
│   ├── 10zyx.txt
│   ├── 11.txt
│   └── zyx.txt
├── ks-script-MZSNDs
├── yum.log
├── zyxml
│   ├── 11.txt.gz
│   ├── 1.txt
│   ├── 20.txt
│   ├── zyx1
│   │   └── d6zsy
│   │       ├── 10zyx.txt
│   │       └── zyx.txt
│   ├── zyx2
│   └── zyx3
├── zyx.txt
└── zyx.txt.zip

6 directories, 13 files
  • 压缩目录:zip -r filename.zip dir
[root@zyxlinux01 tmp]# zip -r zyxml.zip /tmp/zyxml
  adding: tmp/zyxml/ (stored 0%)
  adding: tmp/zyxml/1.txt (deflated 57%)
  adding: tmp/zyxml/zyx1/ (stored 0%)
  adding: tmp/zyxml/zyx1/d6zsy/ (stored 0%)
  adding: tmp/zyxml/zyx1/d6zsy/zyx.txt (deflated 72%)
  adding: tmp/zyxml/zyx1/d6zsy/10zyx.txt (deflated 72%)
  adding: tmp/zyxml/zyx2/ (stored 0%)
  adding: tmp/zyxml/zyx3/ (stored 0%)
  adding: tmp/zyxml/20.txt (deflated 72%)
  adding: tmp/zyxml/11.txt.gz (deflated 0%)
  • 混合压缩(文件+目录):zip -r filename.zip dir filename
[root@zyxlinux01 tmp]# zip -r zyxml.zip /tmp/zyxml yum.log
updating: tmp/zyxml/ (stored 0%)
updating: tmp/zyxml/1.txt (deflated 57%)
updating: tmp/zyxml/zyx1/ (stored 0%)
updating: tmp/zyxml/zyx1/d6zsy/ (stored 0%)
updating: tmp/zyxml/zyx1/d6zsy/zyx.txt (deflated 72%)
updating: tmp/zyxml/zyx1/d6zsy/10zyx.txt (deflated 72%)
updating: tmp/zyxml/zyx2/ (stored 0%)
updating: tmp/zyxml/zyx3/ (stored 0%)
updating: tmp/zyxml/20.txt (deflated 72%)
updating: tmp/zyxml/11.txt.gz (deflated 0%)
  adding: yum.log (stored 0%)
  • unzip -l filename.zip:查看文件列表
[root@zyxlinux01 tmp]# unzip -l zyxml.zip
Archive:  zyxml.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  07-12-2017 19:31   tmp/zyxml/
      883  07-12-2017 00:24   tmp/zyxml/1.txt
        0  07-12-2017 17:59   tmp/zyxml/zyx1/
        0  07-12-2017 17:59   tmp/zyxml/zyx1/d6zsy/
  1170477  07-12-2017 17:59   tmp/zyxml/zyx1/d6zsy/zyx.txt
  1170477  07-12-2017 17:59   tmp/zyxml/zyx1/d6zsy/10zyx.txt
        0  07-12-2017 00:23   tmp/zyxml/zyx2/
        0  07-12-2017 00:23   tmp/zyxml/zyx3/
  1170477  07-12-2017 18:00   tmp/zyxml/20.txt
   324316  07-12-2017 19:31   tmp/zyxml/11.txt.gz
        0  07-09-2017 01:14   yum.log
---------                     -------
  3836630                     11 files
  • unzip filename.zip:因为源文件存在,解压时会提示是否覆盖源文件
[root@zyxlinux01 tmp]# unzip d6zsy.zip 
Archive:  d6zsy.zip
replace d6zsy/zyx.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: 
  • unzip filename.zip -d newdir:解压到另一个目录下
[root@zyxlinux01 d6zsy]# ls /tmp
1.txt  2.txt  d6zsy  ks-script-MZSNDs  yum.log  zyx00  zyxml  zyx.txt  zyx.txt.zip
[root@zyxlinux01 d6zsy]# unzip zyx.zip -d /tmp/zyx00
[root@zyxlinux01 d6zsy]# tree !$
tree /tmp/zyx00
/tmp/zyx00
├── 33.txt
└── zyxml
    ├── 11.txt.gz
    ├── 1.txt
    ├── 20.txt
    ├── zyx1
    │   └── d6zsy
    │       ├── 10zyx.txt
    │       └── zyx.txt
    ├── zyx2
    └── zyx3
5 directories, 6 files

tar:打包工具(用法类似于zip)

  • 打包目录tar -cvf zy.tar zyxml/
[root@zyxlinux01 d6zsy]# ls
10zyx.txt  11.txt  11.txt.gz  22.txt  33.txt  33.txt.bz  zyxml  zyx.txt  zyx.zip
[root@zyxlinux01 d6zsy]# ls zyxml/
11.txt.gz  1.txt  20.txt  zyx1  zyx2  zyx3
[root@zyxlinux01 d6zsy]# tar -cvf zy.tar zyxml/
zyxml/
zyxml/1.txt
zyxml/zyx1/
zyxml/zyx1/d6zsy/
zyxml/zyx1/d6zsy/zyx.txt
zyxml/zyx1/d6zsy/10zyx.txt
zyxml/zyx2/
zyxml/zyx3/
zyxml/20.txt
zyxml/11.txt.gz

c:表示创建,v:可视化

  • 解包tar -xvf zy.tar
[root@zyxlinux01 d6zsy]# tar -xvf zy.tar 
zyxml/
zyxml/zyx1/
zyxml/zyx1/d6zsy/
zyxml/zyx1/d6zsy/zyx.txt
zyxml/zyx1/d6zsy/10zyx.txt
zyxml/zyx2/
zyxml/zyx3/
zyxml/1.txt
zyxml/20.txt
zyxml/11.txt.gz

解包出来的文件目录会直接覆盖打包前的源文件目录,且不会提示

  • 文件目录一起打包``
[root@zyxlinux01 d6zsy]# tar -cvf 01.tar zyxml 33.txt 11.txt.gz 
zyxml/
zyxml/zyx1/
zyxml/zyx1/d6zsy/
zyxml/zyx1/d6zsy/zyx.txt
zyxml/zyx1/d6zsy/10zyx.txt
zyxml/zyx2/
zyxml/zyx3/
zyxml/1.txt
zyxml/20.txt
zyxml/11.txt.gz
33.txt
11.txt.gz
  • 打包后的文件不能直接查看,只能查看文件列表 tar -tf 01.tar
[root@zyxlinux01 d6zsy]# tar -tf 01.tar
zyxml/
zyxml/zyx1/
zyxml/zyx1/d6zsy/
zyxml/zyx1/d6zsy/zyx.txt
zyxml/zyx1/d6zsy/10zyx.txt
zyxml/zyx2/
zyxml/zyx3/
zyxml/1.txt
zyxml/20.txt
zyxml/11.txt.gz
33.txt
11.txt.gz
  • 打包时过滤掉指定的文件目录--exclude(支持通配符)
[root@zyxlinux01 d6zsy]# tree zyxml/
zyxml/
├── 11.txt.gz
├── 1.txt
├── 20.txt
├── zyx1
│   └── d6zsy
│       ├── 10zyx.txt
│       └── zyx.txt
├── zyx2
└── zyx3

4 directories, 5 files
[root@zyxlinux01 d6zsy]# tar -cvf 02.tar --exclude *.gz --exclude zyx1 zyxml
zyxml/
zyxml/zyx2/
zyxml/zyx3/
zyxml/1.txt
zyxml/20.txt

打包的同时可以压缩

  • tar -zcvf 03.tar.gz zyxml 11.txt:打包的同时使用gzip压缩
[root@zyxlinux01 d6zsy]# tar -zcvf 03.tar.gz zyxml 11.txt
zyxml/
zyxml/zyx1/
zyxml/zyx1/d6zsy/
zyxml/zyx1/d6zsy/zyx.txt
zyxml/zyx1/d6zsy/10zyx.txt
zyxml/zyx2/
zyxml/zyx3/
zyxml/11.txt.gz
zyxml/1.txt
zyxml/20.txt
11.txt
[root@zyxlinux01 d6zsy]# ls
01.tar  02.tar  03.tar.gz  10zyx.txt  11.txt  11.txt.gz  22.txt  33.txt  33.txt.bz  zy.tar  zyxml  zyx.txt  zyx.zip
  • tar -zxvf 03.tar.gz:解压解包

  • tar -jcvf:打包同时用bzip2压缩

  • tar -jxvf:解压解包

  • tar -Jcvf:打包同时用xz压缩

  • tar -Jxvf:解压解包

  • -tf:查看文件列表

posted @ 2017-09-22 15:36  指环王Raul  阅读(317)  评论(0编辑  收藏  举报