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
:查看文件列表