您的位置:首页 > 运维架构 > Linux

linux文件的打包与压缩

2017-04-27 23:33 253 查看
        和windows一样,linux也支持文件压缩与解压的功能,文件压缩的原理就是降低文件中数据的重复度与冗余度,简单来说就是如果你你存储了一个数字1占用了一个位而剩下的七个位就没办法再使用了,通过文件压缩可以将这七个位有效的利用起来,又比如你要存储一个1000000000的数字,如果你正常表示的话至少需要十个位来表示,但是如果你表示为一个1,十个1的话也同样存储了相同的信息。这两个例子就简单的将压缩的原理表示出来了,下面我们就详细看一下linux具体的压缩以及解压的命令;

一.linux常见的压缩与解压命令

首先看一下linux常见的压缩文件扩展名:

*.Z                 compress程序压缩的文件

*.gz               gzip程序压缩的文件

*.bz2             bzip2程序压缩的文件

*.tar               tar程序打包的数据,并没有压缩过

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

*.tar.bz2        tar程序打包的文件,其中经过bzip2的压缩

以上可知Linux上常见的压缩命令就是gzip与bzip2两个

1.compress

由于compress比较老旧,基本上已经不用了所以这里只简单介绍下copress压缩和解压缩的命令:

压缩:compress  [-rcv]  文件或目录

解压缩:uncompress 文件.Z

这里解释下-c这个参数,使用了-c这个参数后可以在保留原文件的基础上生成一个压缩文件,而不加参数的话压缩出压缩文件后,原文件就不再了;

2.gzip,zcat

gzip是现在比较用的比较广的压缩命令,它可以解开compress,zip,与gzip等软件的压缩文件,下面来看下详细的操作:

gzip   [-cdtv#]   文件名

zcat   文件名.gz //用来读取压缩文件内的文本文件

参数:

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

-d:解压缩

-t:可以用来检验一个压缩文件的一致性,看看文件有没有错误

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

-#:压缩等级,-1最快,-9最慢,默认为-6

示例:

[guoyong@localhost guo]$ ll

总用量 4

-rw-rw-r--. 1 guoyong guoyong 3617 4月  28 14:33 readme.txt

[guoyong@localhost guo]$ #对readme.txt进行压缩】

[guoyong@localhost guo]$ gzip -v readme.txt

readme.txt:     57.9% -- replaced with readme.txt.gz

[guoyong@localhost guo]$ ll

总用量 4

-rw-rw-r--. 1 guoyong guoyong 1553 4月  28 14:33 readme.txt.gz

[guoyong@localhost guo]$ #可以看见文件大小减少了2000B左右

[guoyong@localhost guo]$ #下面进行解压

[guoyong@localhost guo]$ gzip -d readme.txt.gz

[guoyong@localhost guo]$ ll

总用量 4

-rw-rw-r--. 1 guoyong guoyong 3617 4月  28 14:33 readme.txt

3.bzip,bzcat

bzip2提供比gzip更好的压缩比,详细使用如下:

bzip2   [-cdkzv#]   文件名

bzcat 文件名.bz2

参数:

-c:将压缩过程中产生的数据输出到屏幕上

-d:解压缩的参数

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

-z:: -d 选项的补充,强制进行压缩操作,而不管执行的是哪个程序。

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

-#:与gzip同样的,都是在计算压缩比的参数,-9最佳,-1最快

示例:

[root@localhost guo]# ll

总用量 4

-rw-rw-r--. 1 guoyong guoyong 3617 4月  28 14:33 readme.txt

[root@localhost guo]# #这里对readme.txt压缩

[root@localhost guo]# bzip2 -zv readme.txt

  readme.txt:  2.192:1,  3.649 bits/byte, 54.38% saved, 3617 in, 1650 out.

[root@localhost guo]# ll

总用量 4

-rw-rw-r--. 1 guoyong guoyong 1650 4月  28 14:33 readme.txt.bz2

[root@localhost guo]# 可以看到文件被压缩了,文件大小减少了大约2000B

[root@localhost guo]# #使用zcat读取文件

[root@localhost guo]# ll

总用量 4

-rw-rw-r--. 1 guoyong guoyong 1650 4月  28 14:33 readme.txt.bz2

[root@localhost guo]# bzcat readme.txt.bz2

Adobe Systems Incorporated

Flash Player for Linux

Version 25.0.0.148

[root@localhost guo]# #解压

[root@localhost guo]# bzip2 -d readme.txt.bz2

[root@localhost guo]# ll

总用量 4

-rw-rw-r--. 1 guoyong guoyong 3617 4月  28 14:33 readme.txt

二.打包命令

       前一节的gzip和bzip2只能对单个文件进行压缩,那么linux能否像windows的winrar一样对多个文件或目录进行打包呢?答案明显是肯定的

要对多个文件或目录进行打包就要用到tar这个强大的命令了,下面我们就看看tar怎么用;

tar   [-j][-z][cv]   [-f 新建的文件名]   filename   //打包与压缩

tar   [-j][-z][tv]   [-f 新建的文件名]                       //查看文件名

tar   [-j][-z]   [xv]   [-f 新建的文件名]  [-C 目录]  //解压缩

参数:

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

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

-x:解打包或解压缩的功能,可以搭配-C在特定目录解开

//注意-c,-t,-x不能同时出现在一条命令中

-j:通过bzip2的支持进行压缩/解压缩,此时文件名最好为*.tar.bz2

-z:通过gzip的支持进行压缩/解压缩,此时文件名最好为*.tar.gz

-f filename:-指定存档或设备 (缺省为 /dev/rmt0)

-C 目录:这个参数用在解压缩是,若要在特定目录解压缩,可以使用这个参数

tar的命令可以简单记录为下面三个;

压缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称

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

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

压缩示例:

[root@localhost /]# #对/etc目录所有文件进行备份

[root@localhost /]# tar -zpcv -f /root/etc.tar.gz /etc #z为使用gzip压缩,p为保留原文件的权限,c为新建打包文件,v显示哪些文件被打包了

[root@localhost /]# ll /root/etc*

-rw-r--r--. 1 root root 11238031 4月  28 16:14 /root/etc.tar.gz

查看示例:

[root@localhost /]# tar -ztv -f /root/etc.tar.gz  #查看压缩文件\

解压示例:

[root@localhost ~]# #将压缩文件解压到/tmp下

[root@localhost tmp]# tar -zxv -f /root/etc.tar.gz -C /tmp

etc/

etc/fstab

etc/crypttab

etc/mtab

etc/resolv.conf

etc/fonts/

etc/fonts/conf.d/

etc/fonts/conf.d/65-0-lohit-telugu.conf

etc/fonts/conf.d/59-liberation-sans.conf

etc/fonts/conf.d/66-ucs-miscfixed.conf

etc/fonts/conf.d/59-liberation-mono.conf

etc/fonts/conf.d/65-wqy-microhei.conf

...........

只解开一部分文件:

[root@localhost etc]# #首先查找想要解开的文件例如updatedb.conf

[root@localhost etc]# tar -ztv /root/etc.tar.gz |grep "updatedb.conf"

[root@localhost etc]# tar -ztv -f /root/etc.tar.gz |grep "updatedb.conf"

-rw-r--r-- root/root       513 2016-11-05 01:47 etc/updatedb.conf

[root@localhost etc]# tar -zxv -f /root/etc.tar.gz etc/updatedb.conf

etc/updatedb.conf

[root@localhost etc]# ll

总用量 4

-rw-r--r--. 1 root root 513 11月  5 01:47 updatedb.conf//这时只有一个文件update.conf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: