一、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 这个文件夹下