Linux命令学习4—档案与文件系统的压缩与打包

来源:互联网 发布:jsp请求数据 编辑:程序博客网 时间:2024/05/11 23:09

一、Linux常见的压缩指令

*.Z  compress程序压缩的档案

*.gz   gzip程序压缩的档案

*.bz2 bzip2程序压缩的档案

*.tar tar程序打包的档案,无压缩

*.tar.gz tar程序打包的文档,经过gzip的压缩

*.tar.bz2 tar程序打包的档案,经过bzip2的压缩


二、gzip, zcat

1、格式:gzip [-cdtv#] 档名

    zcat  档名.gz

2、选项与参数:

-c:将压缩的数据输出到屏幕,可使用数据流重导向来处理

-d:解压缩的参数

-t:检测压缩文件的一致性

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

-#:压缩等级,-1最快,但是压缩比最差,-9最慢,压缩比最好,预设-6


3、实例:将man.config进行压缩

#  gzip -v man.config 
man.config:      56.1% -- replaced with man.config.gz

# ll /etc/man.config ./man.config.gz 
-rw-r--r-- 1 root root 4617 2006-07-13 /etc/man.config
-rw-r--r-- 1 root root 2057 07-03 14:58 ./man.config.gz


4、cat可以读取纯文本文档,zcat则可以读取纯文本文档被压缩后的文件:

# zcat man.config.gz 


5、解压缩(-d)

# gzip -d man.config.gz

6、将man.config用最佳压缩比压缩,并保留原本档案

 # gzip -9 -c man.config >man.config.gz


三、bzip2, bzcat

bzip2提供比gzip更好的压缩比,用法几乎与gzip相同:

1、格式:

# bzip2 [-cdkzv#] 档名

# bzcat  档名.bz2

2、选项与参数:

-c:将压缩过程产生的数据显示在屏幕上

-d:解压缩的参数

-k:保留源文件,而不会删除原始的档案

-z:压缩的参数

-v:可显示出原档案/压缩文件的压缩比等信息

-#:压缩比,-9最佳,-1最快

3、实例

将man.config以bzip2压缩:

# bzip2 -z man.config
# ll

-rw-r--r-- 1 root       root       2049 07-03 14:58 man.config.bz2

4、使用bzcat读取bzip2压缩后的纯文本文档

# bzcat man.config.bz2


5、bzip2的解压缩(-d)

# bzip2 -d man.config.bz2


6、将man.config用最佳的压缩比压缩,并保留原本档案

# bzip2 -9 -c man.config>man.config.bz2 


四、打包指令:tar

1、格式:

打包与压缩:tar [-j|-z] [cv] [-f 建立的档名] filename...   

查看文档名:tar [-j|-z] [tv] [-f 建立的档名]]

解压缩:tar [-j|-z] [xv] [-f建立的档名] [-C目录]

2、选项与参数

-c:建立打包档案,可与-v来查看过程中打包的档名

-t:查看打包档案的内容含有那些档名

-x:解打包或解压缩的功能,可与-C(大写)在特定目录解开

注意:-c,-t,-x不可同时出现在一串指令中

-j:使用bzip2的支持进行压缩/解压缩,档名为*.tar.bz2

-z:使用gzip的支持进行压缩/解压缩,档名为*.tar.gz

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

-f filename:-f后面要立刻接被处理的档名

-C目录:用于特定目录解压缩


-p:保留备份数据的原本权限与属性,常用语备份(-c)重要的配置文件

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

--exclude=FILE:在压缩过程中,不要将FILE打包


3、方便使用的形式:

·压缩:tar -jcv -f filename.tar.bz2  要被压缩的档案或目录名称

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

·解压缩:tar -jxv -f filename.tar.bz2 -C  解压的目录


4、实例

4.1 备份/etc目录

# tar -jpcv -f /root/etc.tar.gz  /etc


4.2 查看档案名:

# tar -jtv -f  /root/etc.tar.bz2

由于压缩使用了-p选项,故删除了前面的根目录'''/':

lrwxrwxrwx root/root         0 2012-01-09 00:46:51 etc/rc6.d -> rc.d/rc6.d
-rw-r--r-- root/root     17499 2007-06-19 19:53:20 etc/dnsmasq.conf
-rwxr-xr-x root/root      1292 2007-09-25 23:20:15 etc/auto.net

由于加上了v故而是详细的信息列表,如果只需要知道文件名,可省略v

如果要保留"/",则使用-P选项:

tar -jpPcv -f /root/etc.and.root.tar.bz2  /etc

tar -jtf  /root.and.root.tar.bz2

lrwxrwxrwx root/root         0 2012-01-09 00:46:51 /etc/rc6.d -> rc.d/rc6.d
-rw-r--r-- root/root     17499 2007-06-19 19:53:20 /etc/dnsmasq.conf


4.3 将备份的数据解压缩到特定目录(-C)

tar -jxv -f /root/etc.tar.bz2 -C /tmp 

删除临时目录:rm -rf /tmp/etc


4.4 仅解开单一档案

·先找到档名,假设为shadow:

[root@localhost /]# tar -jtv -f /root/etc.bz2 | grep 'shadow'
-r-------- root/root      1347 2012-01-09 18:07:36 etc/shadow-
-r-------- root/root      1379 2012-01-09 18:07:36 etc/shadow
-r-------- root/root       636 2012-01-09 18:07:36 etc/gshadow-
-r-------- root/root       652 2012-01-09 18:07:36 etc/gshadow

·解开该文件:

格式:tar -jxv -f 打包档.tar.bz2 待解开档名

#tar -jxv -r /root/etc.tar.bz2  etc/shadow


4.5 打包某目录,但不包含该目录下某些文档

打包/etc /root这几个目录,不包含/root/etc*开头档案,新档案放置为/root/system.tar.bz2,

注意这个档案不要打包自身,因为该档案也在/root底下,使用--exclude

# tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc /root


五、完整备份工具:dump

恢复数据使用restore命令