文件与文件系统的压缩和解压缩

Posted cp-linux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件与文件系统的压缩和解压缩相关的知识,希望对你有一定的参考价值。

本篇主要讲述:
1 压缩的介绍
2 压缩的格式
3 tar命令的使用
4 zip命令的使用
 
1、压缩的介绍
1.1 归档的含义
将许多零散的文件整理为一个文件;
文件总的大小基本不变;
1.2压缩的含义
按某种算法减小文件所占用空间的大小;
恢复时按对应的逆向算法解压;
由于 1 Byte = 8 bits ,所以每个 Byte 当中会有 8 个空格,而每个空格可以是 0, 1。压缩就是通过复杂的计算方式将没有使用的空间腾出来。最大的好处就是压缩过的文件大小变小了, 所以你的硬盘容量无形之中就可以容纳更多的数据。
2、压缩的格式
  gzip------->.gz
  bzip2 ---->.bz2
  xz  ------->.xz
2.1 gzip, zcat/zmore/zless/zgrep
gzip [-cdtv#] 文件名
选项与参数:
-c :将压缩的数据输出到屏幕上,可通过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v :可以显示出原文件/压缩文件的压缩比等信息;
-# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6
[root@localhost home]# gzip -v /home/passwd
/home/passwd:    54.8% -- replaced with /home/passwd.gz
[root@localhost home]# ll /home/passwd
ls: cannot access /home/passwd: No such file or directory
[root@localhost home]# gzip -d /home/passwd.gz
[root@localhost home]# ll /home/passwd
-rw-r--r--. 1 root root 795 May 20 02:32 /home/passwd
注意:使用这种压缩方式之后源文件就不存在了,所以最好要在压缩前备份
[root@server0 ~]# zcat 文件名.gz
zcat/zmore/zless 则可以对应于cat/more/less 的方式来读取纯文本文件被压缩后的压缩文件!
[root@localhost home]# zcat passwd.gz
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 
2.2 bzip2, bzcat/bzmore/bzless/bzgrep
使用方法和gzip类似,只是压缩文件的后缀为.bz2
2.3 xz, xzcat/xzmore/xzless/xzgrep
压缩文件的后缀为.xz
 
3、tar 集成备份工具
3.1 参数:
-c:创建归档
-x:释放归档
-f:指定归档文件名称
-z、-j、-J(大写):调用 .gz、.bz2、.xz 格式的工具进行处理
-t:显示归档中的文件清单
-P(大写):保持归档内文件的绝对路径
-C(大写):指定tar包释放的位置
3.2 使用 tar -c ... 命令
tar -zcf 备份文件.tar.gz 被备份的文档....
tar -jcf 备份文件.tar.bz2 被备份的文档....
tar -Jcf 备份文件.tar.xz 被备份的文档....
tar -zcf  /opt/file.tar.gz   /boot/  /home/   #将/boot /home 以gzip格式打包
tar -cf /opt/123.tar /boot     #将/boot内容打包,没有格式
gzip /opt/123.tar                  #以gzip格式解包
tar -jcf  /opt/test.tar.bz2   /boot/  /home/
tar -Jcf  /opt/abc.tar.xz    /boot/  /home/
tar -xf /opt/file.tar.gz -C /mnt/
-t:显示归档中的文件清单
-P(大写):保持归档内文件的绝对路径
实验案例:
[root@server0 ~]# rm -rf /opt/*            #为确保能清楚知道接下来发生了什么
[root@server0 ~]# echo 123456 > /opt/1.txt  
[root@server0 ~]# tar -zcPf /mnt/1.tar.gz   /opt/1.txt 
[root@server0 ~]# rm -rf /opt/1.txt     #删除/opt/1.txt
[root@server0 ~]# cd /mnt/                 #不要在/opt下解压
[root@server0 mnt]# tar -xPf 1.tar.gz    
[root@server01 mnt]# ls /opt              #发现/opt下的1.txt又回来了
总结:-P 压缩和解压是要成对出现的,如果压缩的时候写了,而解压的时候没有写,在哪个路径下解压的就在哪显示出来。
 
4、zip压缩和归档
zip :跨平台(Windows与Linux) 
命令格式:zip [-r]  /路径/备份文件.zip   /路径/被归档的文档..
[root@svr7 ~]# zip -r /opt/test01.zip  /home/ /boot/   #压缩  -r 递归处理,将指定目录下的所有文件和子目录一并处理
[root@svr7 ~]# ls /opt
[root@svr7 ~]# unzip /opt/test01.zip -d /mnt/       #解压
[root@svr7 ~]# zip -r /opt/test02.zip  /etc/selinux
[root@svr7 ~]# ls /opt
[root@svr7 ~]# unzip  /opt/test02.zip  /mnt
 

以上是关于文件与文件系统的压缩和解压缩的主要内容,如果未能解决你的问题,请参考以下文章

压缩和解压缩

Linux 压缩和解压缩命令-gzip/gunzip

Linux下的压缩和解压缩命令gzip/gunzip

EduCoder Linux之文件打包和解压缩

#11 压缩与解压缩

python中如何压缩和解压缩文件