Linux下文件的压缩与打包

一、Linux下常见的文件压缩命令:

在Linux的环境中,压缩文件的扩展名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2』,为什么会有这样的扩展名呢?

这是因为 Linux 支持的压缩命令非常多,且不同的命令所用的压缩技术并不相同,当然彼此之间可能就无法互通压缩/解压缩文件罗。 所以,当你下载到某个压缩档时,自然就需要知道该文件是由哪种压缩命令所制作出来的,好用来对照解压缩! 下面是常见的压缩文件扩展名吧:

*.Z         compress 程序压缩的文件;

*.gz        gzip 程序压缩的文件;

*.bz2       bzip2 程序压缩的文件;

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

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

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

Linux上常见的压缩命令就是 gzip 与 bzip2 ,至於 compress 已经退流行了。 gzip 是由 GNU 所开发出来的压缩命令,该命令已经取代了 compress 。 后来 GNU 又开发出 bzip2 这个压缩比更好的压缩命令!不过,这些命令通常仅能针对一个文件来压缩与解压缩,如此一来, 每次压缩与解压缩都要一大堆文件,岂不烦人?此时,那个所谓的『打包软件, tar』就显的很重要啦!

这个 tar 可以将很多文件『打包』成为一个文件!甚至是目录也可以这么玩。不过,单纯的 tar 功能仅是『打包』而已,亦即是将很多文件集结成为一个文件, 事实上,他并没有提供压缩的功能,后来,GNU中,将整个 tar 与压缩的功能结合在一起,如此一来提供使用者更方便并且更强大的压缩与打包功能! 底下我们就来谈一谈这些在 Linux 底下基本的压缩命令吧!
①  gzip命令

gzip 可以说是应用度最广的压缩命令了!目前 gzip 可以解开 compress, zip 与 gzip 等软件所压缩的文件。 至於 gzip 所创建的压缩文件名为 *.gz!这个命令的语法吧:

[root@www ~]# gzip [-cdtv#] 文件名

[root@www ~]# zcat 文件名.gz

选项与参数:

-c  :将压缩的数据输出到萤幕上,可透过数据流重导向来处理;

-d  :解压缩的参数;

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

-v  :可以显示出原文件/压缩文件的压缩比等资讯;

-#  :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6 

当你使用 gzip 进行压缩时,在默认的状态下原本的文件会被压缩成为 .gz 的档名, 原始文件就不再存在了

压缩文件:

[root@localhost softwore]# gzip -v fs.txt
fs.txt:  61.5% -- replaced with fs.txt.gz
解压文件:

[root@localhost softwore]# gzip -d fs.txt.gz
使用zcat读取压缩文件内容:

cat 可以读取纯文字档,那个 zcat 则可以读取纯文字文件被压缩后的压缩压缩文件! 由於 gzip 这个压缩命令主要想要用来取代 compress 的,所以不但 compress 的压缩文件可以使用 gzip 来解开,同时 zcat 这个命令可以同时读取 compress 与 gzip 的压缩文件!

[root@localhost softwore]# zcat fs.txt.gz
host: 
username: root
password: 
java_home_path: /usr/java/jdk1.7.0_75
mysql_home_path: /usr/local/mysql
mysql_username: root/reder4
mysql_password: 

host: 
username: root
password: 
java_home_path: /usr/java/jdk1.7.0_75
mysql_home_path: /usr/local/mysql
mysql_username: root/rener4
mysql_password:

grant create,select,update,delete,insert,drop on render4_fs.* to render4@'%';[root@localhost softwore]# 
②  bzip2 命令

[root@www ~]# bzip2 [-cdkzv#] 档名

[root@www ~]# bzcat 档名.bz2

选项与参数:

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

-d  :解压缩的参数

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

-z  :压缩的参数

-v  :可以显示出原文件/压缩文件的压缩比等资讯;

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

例:

压缩文件:

[root@localhost softwore]# bzip2 -v fs.txt
  fs.txt:   1.770:1,  4.519 bits/byte, 43.51% saved, 439 in, 248 out.
解压文件:

[root@localhost softwore]# bzip2 -d fs.txt.bz2
同zcat命令,bzcat命令同样可以读取被压缩的纯文本文件

二、打包命令

tar 可以将多个目录或文件打包成一个大文件,同时还可以透过 gzip/bzip2 的支持,将该文件同时进行压缩!

tar命令的使用语法:

[root@www ~]# tar [-j|-z] [cv] [-f 创建的文件名] filename... <==打包与压缩

[root@www ~]# tar [-j|-z] [tv] [-f 创建的文件名]             <==察看档名

[root@www ~]# tar [-j|-z] [xv] [-f 创建的文件名] [-C 目录]   <==解压缩

选项与参数:

-c  :创建打包文件,可搭配 -v 来察看过程中被打包的文件名(filename)

-t  :察看打包文件的内容含有哪些档名,重点在察看『文件名』就是了;

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

      特别留意的是, -c, -t, -x 不可同时出现在一串命令列中。

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

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

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

-f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项罗!

-C 目录    :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。



其他后续练习会使用到的选项介绍:

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

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

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

其实最简单的使用 tar 就只要记忆底下的方式即可:

  • 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
  • 查 询:tar -jtv -f filename.tar.bz2
  • 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
例:

打包压缩操作(打包usr目录下softwore文件夹):

[root@localhost usr]# tar -jcv -f softwore.tar.bz2 softwore
softwore/
softwore/jdk-7u79-linux-x64.rpm
softwore/fs.txt
查询:

[root@localhost usr]# tar -jtv -f softwore.tar.bz2
drwxr-xr-x root/elgin        0 2015-12-21 01:11 softwore/
-rw-r--r-- elgin/elgin 138082565 2015-12-16 20:08 softwore/jdk-7u79-linux-x64.rpm
-rw-r--r-- root/root         439 1970-01-01 01:46 softwore/fs.txt
解压缩:

[root@localhost usr]# tar -jxv -f softwore.tar.bz2 -C /usr/local/softwore
softwore/
softwore/jdk-7u79-linux-x64.rpm
softwore/fs.txt
上述命令将 压缩文件解压到 /usr/local/softwore 这个文件夹下


原文地址:https://www.cnblogs.com/elgin-seth/p/5293733.html