学习linux文件压缩打包
一 压缩和打包介绍
常见的压缩文件
windows .rar .zip .7z
linux .zip .gz .bz2 .xz .tar .gz .tar.bz2 .tar.xz
压缩文件可以节省空间 节省传输时间和带宽
二 gizp压缩工具
gzip 实验 gizp不能压缩目录
在/tmp/下创建一个文件d6z,然后查找conf文件将文件追加到1.txt中
[root@qklinux-01 ~]# cd /tmp/
[root@qklinux-01 tmp]# mkdir d6z
[root@qklinux-01 tmp]# cd d6z/
[root@qklinux-01 d6z]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@qklinux-01 d6z]# ls
1.txt
[root@qklinux-01 d6z]# du -sh 1.txt
236K 1.txt
多次追加 并查看文件大小
[root@qklinux-01 d6z]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@qklinux-01 d6z]# du -sh 1.txt
704K 1.txt
[root@qklinux-01 d6z]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@qklinux-01 d6z]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@qklinux-01 d6z]# du -sh 1.txt
1.2M 1.txt
[root@qklinux-01 d6z]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@qklinux-01 d6z]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@qklinux-01 d6z]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@qklinux-01 d6z]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@qklinux-01 d6z]# du -sh 1.txt
2.2M 1.txt
压缩文件 查看文件大小
[root@qklinux-01 d6z]# gzip 1.txt
[root@qklinux-01 d6z]# ls
1.txt.gz
[root@qklinux-01 d6z]# du -sh 1.txt.gz
496K 1.txt.gz
解压文件命令gzip -d 1.txt.gz或者gunzip 1.txt.gz
gzip – 数字(数字范围1-9) 表示压缩等级 1为压缩效率最低 9最高 默认为6
[root@qklinux-01 d6z]# gzip -d 1.txt.gz
[root@qklinux-01 d6z]# du -sh 1.txt
1.9M 1.txt
[root@qklinux-01 d6z]# gzip -1 1.txt
[root@qklinux-01 d6z]# du -sh 1.txt.gz
580K 1.txt.gz
[root@qklinux-01 d6z]# gunzip 1.txt.gz
[root@qklinux-01 d6z]# ls
- txt
查看压缩文件内容
zcat 1.txt.gz
压缩文件 并指定目录
[root@qklinux-01 d6z]# gzip -c 1.txt > /tmp/1.txt.gz
[root@qklinux-01 d6z]# ls
1.txt
[root@qklinux-01 d6z]# ls /tmp/1.txt.gz
/tmp/1.txt.gz
[root@qklinux-01 d6z]# file !$
file /tmp/1.txt.gz
/tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Tue Mar 26 12:36:42 2019
解压文件 并指定目录
[root@qklinux-01 d6z]# gzip -d -c /tmp/1.txt.gz > /tmp/d6z/2.txt
[root@qklinux-01 d6z]# ls
1.txt 2.txt
[root@qklinux-01 d6z]# wc -l 1.txt 2.txt
48136 1.txt
48136 2.txt
96272 总用量
三.bzip2压缩工具
安装bzip2 yum install -y bzip2
压缩文件
[root@qklinux-01 d6z]# bzip2 1.txt
[root@qklinux-01 d6z]# ls
1.txt.bz2 2.txt
[root@qklinux-01 d6z]# du -sh 1.txt.bz2
184K 1.txt.bz2
同样的两种解压方式bzip2 -d 1.txt.bz2或bunzip2 1.txt.bz2
[root@qklinux-01 d6z]# bzip2 -d 1.txt.bz2
[root@qklinux-01 d6z]# ls
1.txt 2.txt
[root@qklinux-01 d6z]# bzip2 1.txt
[root@qklinux-01 d6z]# bunzip2 1.txt.bz2
[root@qklinux-01 d6z]# ls
1. txt 2.txt
压缩文件并指定目录
[root@qklinux-01 d6z]# bzip2 -c 1.txt > /tmp/1.txt.bz2
[root@qklinux-01 d6z]# du -sh /tmp/1.txt.bz2
184K /tmp/1.txt.bz2
解压文件 并指定路径
[root@qklinux-01 d6z]# bzip2 -d -c /tmp/1.txt.bz2 > 3.txt
[root@qklinux-01 d6z]# ls
1. txt 2.txt 3.txt
也可以使用bzcat 1.txt.bz2 查看bzip2压缩包内容
bzip2压缩级别1-9 ,默认级别是9 同样的也不能压缩目录
file命令用来探测给定文件的类型
[root@qklinux-01 d6z]# file 1.txt.bz2
1. txt.bz2: bzip2 compressed data, block size = 900k
四 .xz压缩工具
xz和gzip bzip2用法类似 压缩级别1-9默认是6 也不能压缩目录
使用xz压缩文件
[root@qklinux-01 d6z]# xz 2.txt
[root@qklinux-01 d6z]# du -sh 2.txt.xz
56K 2.txt.xz
同样支持xz –d和unxz解压文件
[root@qklinux-01 d6z]# ls
1.txt.bz2 2.txt.xz 3.txt
[root@qklinux-01 d6z]# xz -d 2.txt.xz
[root@qklinux-01 d6z]# ls
1. txt.bz2 2.txt 3.txt
[root@qklinux-01 d6z]# xz 2.txt
[root@qklinux-01 d6z]# unxz 2.txt.xz
[root@qklinux-01 d6z]# ls
1. txt.bz2 2.txt 3.txt
压缩文件并指定目录 保留原文件
[root@qklinux-01 d6z]# xz -c 2.txt > /tmp/2.txt.xz
[root@qklinux-01 d6z]# du -sh /tmp/2.txt.xz
56K /tmp/2.txt.xz
解压文件并指定目录 保留原文件
[root@qklinux-01 d6z]# xz -d -c /tmp/2.txt.xz > ./4.txt
[root@qklinux-01 d6z]# ls
1. txt.bz2 2.txt 3.txt 4.txt
xzcat 查看xz压缩内容
xzcat /tmp/2.txt.xz
五. zip压缩工具
zip压缩工具可以压缩目录和文件 zip压缩完原来文件不删除
安装zip文件包 # yum install -y zip
压缩文件2.txt
[root@qklinux-01 d6z]# ls
1.txt.bz2 2.txt 3.txt 4.txt qkailinux
[root@qklinux-01 d6z]# zip 2.txt.zip 2.txt
adding: 2.txt (deflated 74%)
[root@qklinux-01 d6z]# ls
1. txt.bz2 2.txt 2.txt.zip 3.txt 4.txt qkailinux
压缩目录 使用zip –r选项 也可以同时压缩目录和文件
[root@qklinux-01 d6z]# ls
1.txt.bz2 2.txt 2.txt.zip 3.txt 4.txt qkailinux
[root@qklinux-01 d6z]# zip -r qkai.zip 3.txt qkailinux
adding: 3.txt (deflated 74%)
adding: qkailinux/ (stored 0%)
adding: qkailinux/2/ (stored 0%)
adding: qkailinux/2/4.txt (deflated 74%)
adding: qkailinux/qkai2/ (stored 0%)
adding: qkailinux/qkai2/2/ (stored 0%)
adding: qkailinux/qkai2/qkai1/ (stored 0%)
adding: qkailinux/qkai2/qkai1/2/ (stored 0%)
adding: qkailinux/qkai2/qkai1/qkailinux/ (stored 0%)
adding: qkailinux/qkai2/qkai1/qkailinux/2/ (stored 0%)
[root@qklinux-01 d6z]# ls
1.txt.bz2 2.txt.zip 4.txt qkai.zip
2.txt 3.txt qkailinux
zip解压文件或者目录unzip 需要先安装 yum install -y unzip
解压qkai.zip
解压文件中 由于zip压缩不删除原来的文件,所以解压时会提示替换覆盖
[root@qklinux-01 d6z]# unzip qkai.zip
Archive: qkai.zip
replace 3.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: n
replace qkailinux/2/4.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
inflating: qkailinux/2/4.txt
解压文件到指定目录(zip解压文件不能指定文件名字,压缩前解压后文件名一致)
[root@qklinux-01 d6z]# mkdir test
[root@qklinux-01 d6z]# unzip 2.txt.zip -d test/
Archive: 2.txt.zip
inflating: test/2.txt
zip工具只能查看文件列表 不能查看文件内容 unzip -l qkai.zip
[root@qklinux-01 d6z]# unzip -l qkai.zip
Archive: qkai.zip
Length Date Time Name
1930616 03-27-2019 15:12 3.txt
0 03-27-2019 16:03 qkailinux/
0 03-27-2019 16:04 qkailinux/2/
1930616 03-27-2019 16:04 qkailinux/2/4.txt
0 03-27-2019 16:03 qkailinux/qkai2/
0 03-27-2019 16:03 qkailinux/qkai2/2/
0 03-27-2019 16:03 qkailinux/qkai2/qkai1/
0 03-27-2019 16:03 qkailinux/qkai2/qkai1/2/
0 03-27-2019 16:03 qkailinux/qkai2/qkai1/qkailinux/
0 03-27-2019 16:03 qkailinux/qkai2/qkai1/qkailinux/2/
--------- -------
3861232 10 files
六 . tar打包
tar命令是把很多目录打包成一个文件 方便传输 移动
tar打包一个目录 如果文件已经打包 再次打包会直接覆盖文件,不会有提示 tar也同时支持目录和文件一起打包
[root@qklinux-01 d6z]# tar -cvf qkailinux.tar qkailinux/
qkailinux/
qkailinux/2/
qkailinux/2/4.txt
qkailinux/qkai2/
qkailinux/qkai2/2/
qkailinux/qkai2/qkai1/
qkailinux/qkai2/qkai1/2/
qkailinux/qkai2/qkai1/qkailinux/
qkailinux/qkai2/qkai1/qkailinux/2/
[root@qklinux-01 d6z]# ls
1.txt.bz2 2.txt.zip 4.txt qkailinux.tar test
2.txt 3.txt qkailinux qkai.zip
[root@qklinux-01 d6z]# tar -cvf qkailinux.tar qkailinux 3.txt 4.txt
qkailinux/
qkailinux/2/
qkailinux/2/4.txt
qkailinux/qkai2/
qkailinux/qkai2/2/
qkailinux/qkai2/qkai1/
qkailinux/qkai2/qkai1/2/
qkailinux/qkai2/qkai1/qkailinux/
qkailinux/qkai2/qkai1/qkailinux/2/
3.txt
4.txt
tar 解包文件
[root@qklinux-01 d6z]# tar -xvf qkailinux.tar
qkailinux/
qkailinux/2/
qkailinux/2/4.txt
qkailinux/qkai2/
qkailinux/qkai2/2/
qkailinux/qkai2/qkai1/
qkailinux/qkai2/qkai1/2/
qkailinux/qkai2/qkai1/qkailinux/
qkailinux/qkai2/qkai1/qkailinux/2/
tar查看打包的文件列表
[root@qklinux-01 d6z]# tar -tf qkailinux.tar
qkailinux/
qkailinux/2/
qkailinux/2/4.txt
qkailinux/qkai2/
qkailinux/qkai2/2/
qkailinux/qkai2/qkai1/
qkailinux/qkai2/qkai1/2/
qkailinux/qkai2/qkai1/qkailinux/
qkailinux/qkai2/qkai1/qkailinux/2/
3.txt
4.txt
tar过滤指定的文件进行打包
exclude支持多个文件过滤 比如过滤所有txt文件“*.txt””
[root@qklinux-01 d6z]# tar -cvf qkailinux.tar --exclude qkai1 qkailinux 3.txt 4.txt
qkailinux/
qkailinux/2/
qkailinux/2/4.txt
qkailinux/qkai2/
qkailinux/qkai2/2/
3.txt
4.txt
[root@qklinux-01 d6z]# tar -cvf qkailinux.tar --exclude qkai1 --exclude "*.txt" qkailinux 3.txt 4.txt
qkailinux/
qkailinux/2/
qkailinux/qkai2/
qkailinux/qkai2/2/
七 打包并压缩
tar打包的同时可以用gzip压缩 加上-z解包时把选项-c换成-x
[root@qklinux-01 d6z]# tar -czvf qkailinux.tar.gz qkailinux 3.txt 4.txt
qkailinux/
qkailinux/2/
qkailinux/2/4.txt
qkailinux/qkai2/
qkailinux/qkai2/2/
qkailinux/qkai2/qkai1/
qkailinux/qkai2/qkai1/2/
qkailinux/qkai2/qkai1/qkailinux/
qkailinux/qkai2/qkai1/qkailinux/2/
3.txt
4.txt
[root@qklinux-01 d6z]# du -sh qkailinux.tar.gz
1.5M qkailinux.tar.gz
tar打包同时使用bzip2压缩 加上-j解包时把选项-c换成-x
[root@qklinux-01 d6z]# tar -cjvf qkailinux.tar.bz2 qkailinux 3.txt 4.txt
qkailinux/
qkailinux/2/
qkailinux/2/4.txt
qkailinux/qkai2/
qkailinux/qkai2/2/
qkailinux/qkai2/qkai1/
qkailinux/qkai2/qkai1/2/
qkailinux/qkai2/qkai1/qkailinux/
qkailinux/qkai2/qkai1/qkailinux/2/
3.txt
4.txt
[root@qklinux-01 d6z]# du -sh qkailinux.tar.bz2
536K qkailinux.tar.bz2
tar打包同时使用xz压缩, 加-J选项解包时把选项-c换成-x
[root@qklinux-01 d6z]# tar -cJvf qkailinux.tar.xz qkailinux 3.txt 4.txt
qkailinux/
qkailinux/2/
qkailinux/2/4.txt
qkailinux/qkai2/
qkailinux/qkai2/2/
qkailinux/qkai2/qkai1/
qkailinux/qkai2/qkai1/2/
qkailinux/qkai2/qkai1/qkailinux/
qkailinux/qkai2/qkai1/qkailinux/2/
3.txt
4.txt
[root@qklinux-01 d6z]# du -sh qkailinux.tar.xz
60K qkailinux.tar.xz
查看文件列表
tar -tf qkailinux.tar.xz(gz bz2 )