Linux之文件压缩与打包详解,linux打包详解
Linux之文件压缩与打包详解,linux打包详解
在讲解压缩与打包之前说一下什么是压缩,简单的说,就是经过压缩软件压缩的文件叫压缩文件,压缩的原理是把文件的二进制代码压缩,把相邻的0,1代码减少,比如有000000,可以把它变成6个0 的写法60,来减少该文件的空间,计算机中都是以byte为单位的,其实bit才是计算的最小单位,比如对于一个8位的 0000 00001正好是一个byte,但是发现前7位都是0,因此可以“记录”1,这样就省下了 7 bits,实现文件变小的功能。
Linux 系统常见的压缩命令有以下几个,这里之所以有扩名,完全是为了我们解读文件的直观性,看到就知道是什么格式的压缩文件,最主要的是不同的压缩格式解压缩的方式不同,所以通过后缀名,可以使用正确的解压缩方式进行解压缩
1、gzip , zcap
gzip是应用最为广泛的压缩命令,gzip 可以解压zip 和 gzip等软件的压缩文件
[root @localhost ~]#gzip [-cdtv#] filename [root @localhost ~]#zcap filename.gz 参数解析: -c: 将压缩的数据输出到屏幕上,可通过数据流重定向来处理 -d:解压缩参数 -t: 用来检查一个压缩文件的一致性,查看文件有无错误 -v: 显示源文件和压缩文件的压缩比例 -#:压缩等级,-1,压缩速度最快,压缩比最差,-9最慢,压缩比最好,默认是-6
注意:使用gzip进行压缩时,默认下文件被压缩成.gz的形式,源文件会被删除
知道普通文件的查看可以是 cat 命令,同样,压缩文件可以使用 zcat 进行查看 压缩文件的内容
现在将上述压缩文件解压缩
[root@localhost tmp]# gzip -d man.config.gz
注意:gzip -d 解压缩后,默认的将.gz的压缩文件删除,生成源文件
利用重定向保留源文件和压缩文件
[root@localhost tmp]# gzip -c man.config > man.config.gz
2、bzip2,bzcat
bzip2压缩方式是为了取代gzip并提供最佳的压缩比而产生的,其用法同gzip完全一样,只是为了更好的压缩比,同时为了查看压缩文件的内容,使用bzcat进行查看,压缩文件的后缀是 .bz
[root @localhost ~]#bzip2 [-cdtv#] filename [root @localhost ~]#bzcap filename.bz2 参数解析: -c: 将压缩的数据输出到屏幕上,可通过数据流重定向来处理 -d:解压缩参数 -t: 用来检查一个压缩文件的一致性,查看文件有无错误 -v: 显示源文件和压缩文件的压缩比例 -#:压缩等级,-1,压缩速度最快,压缩比最差,-9最慢,压缩比最好,默认是-6
3、打包 tar
什么是打包?就是将多个文件或者目录包成一个文件的功能。
[root @localhost ~]#tar [-j|-z] [cv] [-f新建的文件名] filename1,filenam2.... #打包与压缩 [root @localhost ~]#tar [-j|-z] [-tv] [-f 新建的文件名] #查看文件名 [root @localhost ~]#tar [-j|-z] [xv] [-f新建的文件名] [-C 目录] #解压缩参数 参数解析: -c: 新建打包文件,可搭配 -v来查看过程中被打包的文件名 filename1... -t: 查看打包文件的内容含有哪些文件名,重点在查看文件名 -x: 解打包或者解压缩,搭配 -C 在特定目录解开,特别注意:-c,-t,-x不可同时出现在一串命令行中 -j: 通过bzip2的支持进行压缩/解压缩,此时文件名的后缀建议为.tar.bz2 -z: 通过gzip的支持进行压缩/解压缩,此时文件名的后缀建议为.tar.gz -v: 在压缩/解压缩的过程中,将正在处理的文件名显示处理 -f filename: -f后面跟要被处理的文件,建议 -f 单独写成一个参数 -C 目录: 这个参数在解压缩时,若要在特定目录解压缩,可以使用这个参数
另外还有两个参数:
-p: 保留备份数据的基本权限与属性,常用与备份(-c)重要的配置文件
-P:保留绝对路径,即允许备份数据中含有根目录存在之意
注意:之所以要将 -f filename单独写,如果 -jcvf filename也可以,但由于参数的顺序是可以变更,这样与 -jvfc filename 仅 仅是变更了参数顺序,但是这样是不行,因为 -f filename ,这样导致生成了文件名为 c 的文件,因此建议-f单独列出来
常见的使用tar如下几条命令:
[root @localhost ~]#tar -jcv -f filename.tar.bz2 要被压缩的文件和目录 #压缩命令 [root @localhost ~]#tar -jtv -f filename.tar.bz2 #查询 [root @localhost ~]#tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录 #解压缩
将/etc目录下的文件打包并压缩为etc.tar.gz的压缩文件
[root @localhost ~]#tar -zpcv -f /root/etc.tar.gz /etc
由于指定了 -v 参数,因此会将打包压缩过程中的文件名显示在屏幕上,对于 -p 参数,是为了保留源文件的权限和属性
图中,显示了部分打包压缩过程中的文件名。解压缩
[root @localhost ~]#tar -jpcv -f /root/etc.tar.gz /etc
[root @localhost ~]#tar -jxv -f /root/etc.tar.bz2 #将 tar 文件解压缩
注意:文件的备份和复制过程中,文件的权限可能会发生变更,因此在备份重要的系统数据时,源文件的权限必须进行完整的备份
查看 tar 文件的数据内容
[root @localhost ~]#tar -jtv -f /root/etc.tar.bi2
这里给出整个过程:
[root @localhost ~]#tar -jpcv -f /root/etc.tar.bz2 /etc #将 /etc 目录压缩为etc.bta.bz2 的压缩文件
[root @localhost ~]#tar -jtv -f /root/etc.tar.bz2 #查看 tar 文件的数据内容
查看压缩文件的内容时,使用 参数 -v 会将文件权限/属性显示出来
[root @localhost ~]#tar -jxv -f /root/etc.tar.bz2 #将 tar 文件解压缩
此时会看到解压缩后的文件 /etc 会在本目录下生成
通常需要指定解压缩的位置,将解压缩后的文件放在 /tmp 目录下
[root @localhost ~]#tar -jxv -f /root/etc.tar.bz2 -C /tmp #指定 tar 文件解压缩的位置为 /tmp
a.那如果只是想解压压缩文件中的某一个文件呢?
使用 -jtv 找到你要的文件名
[root @localhost ~]#tar -jtv -f /root/etc.tar.bz2 | grep 'shadow' #找到需要解压的文件 [root @localhost ~]#tar -jxv -f /root/etc.tar.bz2 /etc/shadow #解压压缩文件中的一个文件
其中方法是,先通过 -jtv 找到需要解压的文件,然后使用 -jxv 进行解压
[root @localhost ~]#tar -jxv -f 打包文件.tar.bz2 待解压的文件名
b.打包某个目录,但是不包含该目录下的某些文件
评论暂时关闭