个人认为linux的压缩与windows上的压缩有一点区别,windows上的压缩是将压缩与打包结合在一起的
linux的压缩一般是针对单个文件的,而打包是把几个文件打包成一个文件(打包本身并没有减小文件的大小)
一、文件压缩与解压缩
这里只讲解两种压缩与解压缩的方法gzip和bzip2
(1)gzip
用法:gzip [-cdtv] 文件名
说明:生成.gz为后缀的压缩文件
参数说明:
-c 将压缩后的数据输出到屏幕上,用于数据流重定向
-d 用于解压缩
-t 用于检查文件是否有错误
-v 显示原文件与压缩后的文件的压缩比例
看下面这个例子,有一个文件network,它原来的大小为8257B,压缩后的大小为2589B
压缩完成后,只有network.gz这个文件,原文件network已经被覆盖
1 [root@localhost php]# ls -l
2 总计 32
3 -rw-r--r-- 1 root root 2 12-05 13:59 a.txt
4 -rw-r--r-- 1 root root 177 12-05 14:06 hello.php
5 -rwxr-xr-x 1 root root 8257 12-05 14:08 network
6 [root@localhost php]# gzip -v network
7 network: 69.0% -- replaced with network.gz
8 [root@localhost php]# ls -l
9 总计 24
10 -rw-r--r-- 1 root root 2 12-05 13:59 a.txt
11 -rw-r--r-- 1 root root 177 12-05 14:06 hello.php
12 -rwxr-xr-x 1 root root 2589 12-05 14:08 network.gz
解压缩:gzip -d 文件名
1 [root@localhost php]# gzip -d network.gz
2 [root@localhost php]# ls -l
3 总计 32
4 -rw-r--r-- 1 root root 2 12-05 13:59 a.txt
5 -rw-r--r-- 1 root root 177 12-05 14:06 hello.php
6 -rwxr-xr-x 1 root root 8257 12-05 14:08 network
(2)zcat 直接读取压缩文件的内容
我们首先看一下未压缩前一个文件的内容
1 [root@localhost php]# cat hello.php
2 <?php
3 echo "hello,world";
4 $name = 'php';
5 $array = array('name'=>'张三','sex'=>'男');
6
7
8
9
10 ?>
然后我们压缩一下这个文件,再看其内容:
1 [root@localhost php]# gzip -v hello.php
2 hello.php: 12.2% -- replaced with hello.php.gz
3 [root@localhost php]# ls
4 a.txt hello.php.gz network
5 [root@localhost php]# zcat hello.php.gz
6 <?php
7 echo "hello,world";
8 $name = 'php';
9 $array = array('name'=>'张三','sex'=>'男');
10
11
12
13
14 ?>
(3)bzip2 压缩与解压缩,生成.bz2为后缀的文件
bzip2 [-cdkv] 文件
-c 将压缩数据输出到屏幕上,用于数据流重定向
-d 解压缩
-k 保留原来的文件
-v 显示压缩比
bzip2 -v 文件(不保留原文件)
1 [root@localhost php]# bzip2 -v network
2 network: 2.925:1, 2.735 bits/byte, 65.81% saved, 8257 in, 2823 out.
3 [root@localhost php]# ls
4 a.txt hello.php network.bz2
bzip2 -k 文件(保留原文件)
1 [root@localhost php]# bzip2 -k network
2 [root@localhost php]# ls
3 a.txt hello.php network network.bz2
bzip2 -d 文件:解压缩
1 [root@localhost php]# bzip2 -d network.bz2
2 [root@localhost php]# ls
3 a.txt hello.php network
(4)bzcat:读取由bzip2压缩的文件的内容
1 [root@localhost php]# bzip2 -v hello.php
2 hello.php: 0.748:1, 10.694 bits/byte, -33.67% saved, 98 in, 131 out.
3 [root@localhost php]# ls
4 a.txt hello.php.bz2 network.bz2
5 [root@localhost php]# bzcat hello.php.bz2
6 <?php
7 echo "hello,world";
8 $name = 'php';
9 $array = array('name'=>'张三','sex'=>'男');
10
11
12
13
14 ?>
二、打包 :tar
(1)解压缩
用法:tar -[z|j][cxvf] 文件名/目录名
参数说明:-z 使用gzip先压缩文件
-j 使用bzip2先压缩文件
-c 建立新的打包文件(打包用)
-x 将打包文件解开
-v 显示指令执行过程
-f 指定要操作的文件
应用:我们一般在网上下载一个软件(linux的),一般都是压缩文件,如我想在linux上安装mysql,首先是下载源码,再解压缩
下载下来的文件如: mysql-5.5.27.tar.gz
下面来解压缩:
1 [root@localhost php]# ls
2 a.txt hello.php mysql-5.5.27.tar.gz network
3 root@localhost php]# tar -zxvf mysql-5.5.27.tar.gz
4 [root@localhost php]# ls
5 a.txt hello.php mysql-5.5.27 mysql-5.5.27.tar.gz network
(2)压缩文件:
语法:tar -zcvf 压缩文件名 被压缩的文件
使用gzip这种技术来压缩文件并打包
1 [root@localhost test]# ls
2 document_root includes php
3 [root@localhost test]#tar -zcvf php.gz php
4 [root@localhost test]# ls
5 document_root includes php php.gz
使用bzip2这种技术来压缩文件或打包
1 [root@localhost test]# ls
2 document_root includes php php.gz
3 [root@localhost test]# tar -jcvf php.tar.bz2 php
4 [root@localhost test]# ls
5 document_root includes php php.gz php.tar.bz2