Linux_文件与文件系统的压缩与打包

Linux_文件与文件系统的压缩与打包

edited by zhangjianfei @2016/12/14/19:13

 

1·压缩技术原理:

在计算机中存储的最小单位为byte, 但事实上存在bit这个更小的单位,1byte=8bit,数字1存储的格式为00000001,前7bit为空,自动补上1,但是这太占用空间了,所以压缩技术的原理就是记成‘701

 

2·Linux包含了6种压缩命令:

*.Z: compress程序压缩的文件(基本已废弃不再使用)

已废弃,不再赘述,可以使用yum install ncompress安装

#compress [-rcv] filename/dirname

#uncompress filename.Z

-r: 连同目录下的文件一同压缩

-c: 将压缩数据输出到屏幕上

-v: 显示压缩后文件的信息以及压缩过程中的一些变化

*:默认情况下,被compress压缩的源文件会不见,若要保留,可以使用 -c+>

例如:#compress -c man.config > man.config.back.Z后,存在2个文件:man.config man.config.back.Z

 

*.gzgzip程序压缩的文件

#gzip [-cdtv#] filename

#zcat filename.gz

-c :将压缩数据输出到屏幕上,可通过数据流重定向来处理

-d :解压缩的参数(gzip -d 解压缩,等同于zcat

-t :检查压缩文件的一致性,看看是否有误

-v :显示源文件/压缩文件的压缩比信息

-#:压缩等级,-1最快效果最差,-9最慢效果最好,最好使用默认的-6

*:和compress一样,默认情况下源文件会不见,同样可以使用数据流重定向来保留

 

*.bz2bzip2程序压缩的文件

#bzip2 [cdkzv#] filename

#bzcat filename.bz2

-c :gzip

-d :gzip

-k :保留源文件,且不会删除原始文件

-z :压缩的参数

-v :gzip

-# :gzip

*: zcat并不是解压缩命令,而是把压缩文件里的内容读出来

 

*.tartar程序打包的数据(未压缩)

将多个文件/目录进行打包

#tar [-j|-z] [cv] [-f 新建的文件名] 被打包压缩的文件名 <==打包与压缩

#tar [-j|-z] [tv] [-f 新建的文件名]  <==查看文件名

#tar [-j|-z] [xv] [-f 新建的文件名]  <==解压缩

-c :新建打包文件,可搭配-v查看过程中被打包的文件名

-t :查看打包文件的内容含有哪些文件名,重点在查看文件名

-x :解打包、解压缩,搭配-C指定目录

*-c -t -x 不可同时出现

-j :通过bzip2支持进行解压缩/解打包,文件后缀名为*.tar.bz2

-z :通过gzip支持进行解压缩/解打包, 文件后缀名*.tar.gz

-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来

-f newfilename :文件名称需要自己定义,tar并不会主动创建文件名,因为-f后需要紧接 filename所以该命令最好单独列出,不要和其他命令混用

-C :目录

-p :保留备份数据的原本属性与权限

-P :保留绝对路径,即允许备份数据中含有根目录存在

--exclude=FILE:压缩过程中,不要将FILE打包,即打包某目录时,不含该目录下的文件

使用tar只需记住以下3个实例即可:

压缩:#tar -jcv -f newfilename.tar.bz2 oldfilename

查询:#tar -jtv -f filename.tar.bz2

解压缩:#tar -jxv -f filename.tar.bz2 -C dirName

*在使用此命令的时候会出现警告:leading `/ from member names, 解压之后我们发现 文件都变成了/childFilename的样子,tar帮我们去掉了根目录,因为在当前文件夹下, 如果保留了绝对路径,比如在/tmp下解压,去掉根目录的文件路径为/tmp/etc/a,如果 不去掉,那么就会变成/etc/a,会把etc下面原本的文件覆盖掉,这显然是不安全的。 如果确定要覆盖,可以使用-P命令

 

*.tar.gztar程序打包的数据,经过gzip压缩

*.tar.bz2tar程序打包的数据,经过bzip2压缩

 

你可能感兴趣的:(linux,解压缩,压缩,打包,解包,Linux)