day14——文件的打包与压缩

文件打包与压缩

什么是文件压缩?

将多个文件或目录合并成为一个特殊的文件

为什么要对文件进行压缩?

  • 减小文件的体积
  • 加快资源的传输
  • 节省网络的带宽

Windows的压缩包与Linux的压缩包能否互通?

  • Windows常见的压缩包后缀名:zip、rar(它支持很多类型的压缩格式)
  • Linux常见的压缩包后缀名:zip、gzip、tar.gz、tar.bz、tar.bz2
    Windows与Linux互通建议使用:zip

Linux下压缩包有哪些常见的类型?

格式 压缩工具
.zip zip压缩工具(必须要会使用)
.gz gzip压缩工具,只能压缩文件,会删除源文件(通常配合tar使用)
.bz2 bzip2压缩工具,只能压缩文件,会删除源文件(通常配合tar使用)
.tar.gz 先使用tar命令归档打包,然后使用gzip压缩(必须会的)
.tar.bz2 先使用tar命令归档打包,然后使用bzip压缩(顺带就会)

gzip打包与压缩

gzip:打包与压缩 ,仅对文件有效,只能给一个文件打包.
gzip filename:打包
gzip -d filename.gz:解包
zcat filename.gz:查看压缩包内文件的内容

1.先要安装gzip这个工具包
[root@oldboy ~]# yum install gzip -y
2.将1.txt进行打包
[root@oldboy ~]# gzip 1.txt 
3.查看1.txt压缩包里的内容
[root@oldboy ~]# zcat 1.txt.gz
4.解压
[root@oldboy ~]# gzip -d 1.txt.gz  

使用场景:当需要某个文件快速关闭和快速启用

[root@xuliangwei ~]# gzip CentOS-Vault.repo      --> CentOS-Vault.repo.gz(系统不会运行压缩包)
[root@xuliangwei ~]# zcat CentOS-Vault.repo.gz   --> 查看不想解压的压缩包文件内容

zip打包与压缩

zip filename.zip filename:打包
zip -r dir.zip dir/:递归,将目录里的所有内容打包
zip -T filename.zip:查看压缩包是否完整
unzip filename.zip:解压
unzip -l filename.zip:查看压缩包里面的内容
unzip filename.zip -d /dir:解压到指定位置

unzip -t filename.zip:检测文件是否完整

(1)zip工具使用

默认情况下没有zip和unzip工具,需要进行安装
[root@oldboy ~]# yum install zip unzip -y

1.压缩文件为zip包 
[root@oldboy ~]# zip 1.zip 1.txt
updating: 1.txt (deflated 54%) 
[root@oldboy ~]# unzip -l 1.zip     不解压的情况下查看包内容

2.压缩目录为zip包   
[root@oldboy ~]# zip -r dir.zip dir/

3.查看zip压缩包是否是完整的         
[root@oldboy ~]# zip -T 1.zip 
test of 1.zip OK

4.不解压压缩查看压缩包中的内容 
[root@oldboy ~]# unzip -l 1.zip
检测文件是否都ok
[root@oldboy ~]# unzip -t 1.zip 
Archive:  1.zip
    testing: 1.txt                    OK
No errors detected in compressed data of 1.zip.

5.解压zip文件包, 默认解压至当前目录           
[root@oldboy ~]# unzip 1.zip 
Archive:  1.zip
  inflating: 1.txt

6.解压zip内容至/opt目录
[root@oldboy ~]# unzip 1.zip -d /tmp/

tar打包与压缩

tar是Linux下最常用的压缩与解压缩,支持文件和目录的压缩归档

#语法:tar [-zjxcvfpP] filename 
c   创建新的归档文件
x   对归档文件解包
t   列出归档文件里的文件列表
v   输出命令的归档或解包的过程
f   指定包文件名,多参数f写最后

z   使用gzip压缩归档后的文件(.tar.gz)
j   使用bzip2压缩归档后的文件(.tar.bz2)
J   使用xz压缩归档后的文件(tar.xz)
-C(大)   指定解压目录位置
X   排除多个文件(写入需要排除的文件名称)
h   打包软链接
--hard-dereference  打包硬链接
--exclude   在打包的时候写入需要排除文件或目录

常用打包与压缩组合

czf     打包tar.gz格式(常用)
xf      自动选择解压模式(常用)
tf      查看压缩包内容(常用)

cjf     打包tar.bz格式
cJf     打包tar.xz格式
jxf     解压tar.bz格式
zxf     解压tar.gz格式

(1)将文件或目录进行打包压缩 查看压缩包内容

1.以gzip归档方式打包并压缩
[root@oldboy ~]# tar czf  test.tar.gz  test/ test2/
以bz2方式压缩 
[root@oldboy ~]# cjf  test.tar.bz2 dir.txt dir/

2.查看包内容
[root@oldboy ~]# tar tf test.tar.gz     

3.解压
[root@oldboy ~]# tar xf  test.tar.xz
[root@oldboy ~]# tar xf  test.tar.gz   xf自动选择解压模式,适用所有.tar开头的压缩包
[root@oldboy ~]# tar xf root.tar.gz  -C /tmp/   -C解压至指定目录

4.打包/tmp下所有文件 
[root@oldboy ~]# find tmp/ -type f | xargs tar czf tmp.tar.gz 
第二种:
[root@oldboy ~]# tar czf tmp.tar.gz $(find /tmp/ -type f)

(2)打包链接文件,打包链接文件的真实文件

[root@oldboy ~]# cd /
[root@oldboy /]#  tar czfh local.tar.gz  etc/rc.local

(3)排除文件里的部分内容,并压缩打包

[root@oldboy ~]# tar czf etc.tar.gz /etc/ --exclude=etc/services
[root@oldboy ~]# tar czf etc.tar.gz /etc/ --exclude=etc/passwd --exclude=etc/shadow

(4)将需要排除的文件写入文件中

[root@oldboy ~]# vim pc.txt 
etc/gshadow 
etc/gshadowetc/passwd 
etc/passwdetc/shadowetc/shadow 
etc/security/opasswd 
etc/pam.d/passwd 
[root@oldboy ~]# tar czXf pc.txt etc.tar.gz  /etc/
tar命令练习
#1.环境准备
[root@xuliangwei ~]# yum install mariadb-server
[root@xuliangwei ~]# systemctl start mariadb
[root@xuliangwei ~]# mkdir /backup

#案例1.mysql备份及恢复
[root@xuliangwei ~]# tar cJf /backup/mysql.tar.xz /var/lib/mysql
[root@xuliangwei ~]# tar xf /backup/mysql.tar.xz -C /

#案例2 mysql备份及恢复
[root@xuliangwei ~]# cd /var/lib/mysql
[root@xuliangwei mysql]# tar cJf /backup/mysql.tar.xz *
[root@xuliangwei mysql]# tar tf /backup/mysql.tar.xz
[root@xuliangwei mysql]# tar xf /backup/mysql.tar.xz -C /var/lib/mysql

你可能感兴趣的:(day14——文件的打包与压缩)