个人认为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