Linux系统学习第四章:文件压缩、打包与备份(一)压缩与打包:gzip、gcat、bzip2、bzcat、tar

时间:2022-05-14 09:11:48

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