压缩命令: gzip,bzip2,xz,tar

作者:jicanmeng

时间:2016年06月07日


  1. gzip
  2. bzip2
  3. tar
  4. xz

1. gzip 和 zcat

gzip用于压缩和解压文件,命令格式如下:

gzip [-cdt] file

默认情况下,使用gzip压缩文件后,原来的文件会删除。

示例如下:

[jicanmeng@andy tmp]$ ls
                    a.txt
                [jicanmeng@andy tmp]$ gzip -v a.txt
                    a.txt:	 20.4% -- replaced with a.txt.gz
                [jicanmeng@andy tmp]$ ls
                    a.txt.gz
                [jicanmeng@andy tmp]$ gzip -l a.txt.gz
                    compressed        uncompressed  ratio uncompressed_name
                           114          103  20.4% a.txt
                [jicanmeng@andy tmp]$ file a.txt.gz
                    a.txt.gz: gzip compressed data, was "a.txt", from Unix, last modified: Tue Jun  7 22:34:18 2016
                [jicanmeng@andy tmp]$ gzip -d a.txt.gz
                [jicanmeng@andy tmp]$ ls
                    a.txt
                [jicanmeng@andy tmp]$

zcat命令用于查看gzip格式的压缩文件的内容,命令格式如下:

zcat file

示例如下:

[jicanmeng@andy tmp]$ zcat a.txt.gz
                    http://stackoverflow.com/questions/12779026/unix-v6-source-code
                    https://pdos.csail.mit.edu/6.828/2012/
                [jicanmeng@andy tmp]$ gzip -d a.txt.gz
                [jicanmeng@andy tmp]$ zcat a.txt
                    gzip: a.txt: not in gzip format
                [jicanmeng@andy tmp]$

2. bzip2和bzcat

bzip2用于压缩和解压文件,命令格式如下:

bzip2 [-cdzkv] file

默认情况下,压缩文件后会删除原来的文件,-k会指定保留原来的文件。

单独指定-v或-c选项时,都会压缩文件。

示例如下:

[jicanmeng@andy tmp]$ ls
                    a.txt
                [jicanmeng@andy tmp]$ bzip2 -vk a.txt
                      a.txt:    0.811:1,  9.864 bits/byte, -23.30% saved, 103 in, 127 out.
                [jicanmeng@andy tmp]$ ls
                    a.txt  a.txt.bz2
                [jicanmeng@andy tmp]$ file a.txt.bz2
                    a.txt.bz2: bzip2 compressed data, block size = 900k
                [jicanmeng@andy tmp]$

bzcat命令用于查看bzip2格式的压缩文件的内容,命令格式如下:

bzcat file

示例如下:

[jicanmeng@andy tmp]$ bzcat a.txt.bz2
                    http://stackoverflow.com/questions/12779026/unix-v6-source-code
                    https://pdos.csail.mit.edu/6.828/2012/
                [jicanmeng@andy tmp]$ bzcat a.txt.bz2
                [jicanmeng@andy tmp]$ zcat a.txt
                    gzip: a.txt: not in gzip format
                [jicanmeng@andy tmp]$

3. tar

gzip和bzip2命令只能压缩文件,不能压缩目录。linux中常用的方法是首先将目录用tar命令打包为一个后缀名为.tar的文件,再使用gzip或bzip2命令进行压缩为一个后缀名为.tar.gz或.tar.bz2的文件。

压缩的命令格式如下:

tar -zcv -f /root/etc.tar.gz /etc
tar -jcv -f /root/etc.tar.bz2 /etc

解压缩的命令格式如下:

tar -zxv -f /root/etc.tar.gz
tar -jxv -f /root/etc.tar.bz2

查看压缩包中有什么文件的命令格式如下:

tar -ztv -f /root/etc.tar.gz
tar -jtv -f /root/etc.tar.bz2

另外,还有几个比较重要的选项:

示例如下:

[root@andy tmp]# tar -zcv -f /root/etc.tar.gz /etc/
                    tar: Removing leading `/' from member names
                    /etc/
                    /etc/drirc
                    /etc/idmapd.conf
                    /etc/auto.net
                    ...
                [root@andy tmp]# tar -ztv -f /root/etc.tar.gz
                    drwxr-xr-x root/root           0 2016-06-07 22:05 etc/
                    -rw-r--r-- root/root      3095 2014-10-17 21:20 etc/drirc
                    -rw-r--r-- root/root      3581 2013-02-22 09:53 etc/idmapd.conf
                    -rwxr-xr-x root/root      1260 2013-11-23 22:07 etc/auto.net
                    drwxr-xr-x root/root           0 2014-04-17 07:36 etc/gtk-2.0/
                    ...
                [root@andy tmp]# tar -zxv -f etc.tar.gz -C /home/
                    ...
                [root@andy tmp]# ll /home/
                    total 16
                    drwxr-xr-x. 115 root      root      12288 Jun  7 22:05 etc
                    drwx------.  35 jicanmeng jicanmeng  4096 Jun  7 23:29 jicanmeng
                [root@andy tmp]#
                [root@andy tmp]# tar -zcvP -f /root/etc.tar.gz /etc/
                    /etc/
                    /etc/drirc
                    /etc/idmapd.conf
                    /etc/auto.net
                    ...
                [root@andy tmp]# tar -ztv -f /root/etc.tar.gz
                    drwxr-xr-x root/root           0 2016-06-07 22:05 /etc/
                    -rw-r--r-- root/root      3095 2014-10-17 21:20 /etc/drirc
                    -rw-r--r-- root/root      3581 2013-02-22 09:53 /etc/idmapd.conf
                    -rwxr-xr-x root/root      1260 2013-11-23 22:07 /etc/auto.net
                    drwxr-xr-x root/root           0 2014-04-17 07:36 /etc/gtk-2.0/
                    ...
                [root@andy tmp]#

通过上面的例子,可以看到-P选项的作用。如果指定了-P选项,那么解压的文件的路径就是使用-t选项看到的,在/etc/目录下,这会覆盖/etc/目录下的文件。所以,一般情况下,我们都不会添加-P选项。

4. xz

xz和gzip、bzip2一样,也是一种压缩算法。和tar一起使用时,z表示gzip,j表示bzip2,J表示xz。使用tar和xz压缩的文件的后缀名为.tar.xz。

参考资料

  1. 鸟哥的linux私房菜
    http://vbird.dic.ksu.edu.tw/linux_basic/0240tarcompress.php