小谈 LINUX 中的打包与压缩

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小谈 LINUX 中的打包与压缩相关的知识,希望对你有一定的参考价值。


        打包,亦为归档,其意为:将一个或多个文件或目录变成一个总的目录文件。文件不会变小,有可能变大,有可能增加一些附加标注信息。这个过程,你可以近似的理解为windows中的多个文件或目录移动到一个指定的目录下面。

压缩:是将一个或多个文件,结合压缩程序,通过压缩程序特定的算法,将其“封装”成为一个特殊格式的新文件的过程。这个压缩的过程,与windows 系统里面的压缩的概念是一样的。

 

首先,来说说打包

        通过命令 tar 来进行打包,语法格式:tar 【option】 file | directory 。常用的参数主要有 c 、v 、f 。

       c   -create 创建; v  -verbose 详细的; f  -file 后面接文件名 ;x  -extract 提取和解压

注:v 可以省略,下图有这个参数带与不带的区别,建议还是带上

        x  解打包的tar文件,基本不用,一般是解压打包并压缩后文件

 

[[email protected] mnt]# ll

-rw-rw-r--. 1 root root    0 3月  1222:56 py

drwxr-xr-x. 2 root root 4096 3月   4 17:28 test

[[email protected] mnt]# tar -cvf py.tar py

py

[[email protected] mnt]# tar -cf test.tar test

[[email protected] mnt]# ll

-rw-rw-r--. 1 root root     0 3月  1222:56 py

-rw-r--r--. 1 root root 10240 3月  12 22:59 py.tar

drwxr-xr-x. 2 root root  4096 3月   417:28 test

-rw-r--r--. 1 root root 10240 3月  12 22:59 test.tar


下面是解包的过程,其相关的参数是 x

[[email protected] opt]# ll

drwxr-xr-x. 2 root root  4096 3月  262015 rh

-rw-r--r--. 1 root root 10240 3月  12 23:25 rh.tar

[[email protected] opt]# mv rh rh.bak

[[email protected] opt]# tar -xvf rh.tar

rh/

[[email protected] opt]# ll

drwxr-xr-x. 2 root root  4096 3月  262015 rh

drwxr-xr-x. 2 root root  4096 3月  262015 rh.bak

-rw-r--r--. 1 root root 10240 3月  12 23:25 rh.tar

 

其次,我们讲一下压缩

常见的压缩程序有 gz 、bz2 、xz,下面分别举例说明

[[email protected] mnt]# ll

-rw-r--r--. 1 root root 0 3月  13 00:07 kk

-rw-r--r--. 1 root root 0 3月  13 00:07 py

-rw-r--r--. 1 root root 0 3月  13 00:08 seo

[[email protected] mnt]# gzip kk

[[email protected] mnt]# bzip2 py

[[email protected] mnt]# xz seo

[[email protected] mnt]# ll

-rw-r--r--. 1 root root 23 3月  13 00:07 kk.gz

-rw-r--r--. 1 root root 14 3月  13 00:07 py.bz2

-rw-r--r--. 1 root root 32 3月  13 00:08 seo.xz

 

     上面是三种命令分别进行压缩的过程,和下面的相比,唯一的不同之处在于,上面压缩后没有保留原文件,而下面的加上一些参数后,很好的保留了原文件。

        gzip 通过参数  -c 类似重定向输出保留原文件,bzip2 和 xz 加上参数 k 保留原文件。具体如下图

[[email protected] opt]# ll

-rw-r--r--. 1 root root 0 3月  13 00:02 book

-rw-r--r--. 1 root root 0 3月  12 23:53 world

-rw-r--r--. 1 root root 0 3月  13 00:02 zhang

[[email protected] opt]# gzip -c book >book.gz

[[email protected] opt]# bzip2 -k world

[[email protected] opt]# xz -k zhang

[[email protected] opt]# ll

-rw-r--r--. 1 root root  0 3月  1300:02 book

-rw-r--r--. 1 root root 25 3月  13 00:05 book.gz

-rw-r--r--. 1 root root  0 3月  1223:53 world

-rw-r--r--. 1 root root 14 3月  12 23:53 world.bz2

-rw-r--r--. 1 root root  0 3月  1300:02 zhang

-rw-r--r--. 1 root root 32 3月  13 00:02 zhang.xz

 

     对文件压缩后,还可以通过命令查看压缩后的文件的内容,相对应的命令的命令分别为 zcat*.gz 、bzcat *.bz2 、xzcat *.xz

下面就拿 gz 格式的文件举例说明 

[[email protected] mnt]# ll

-rw-r--r--. 1 root root 362 3月  13 00:11 passwd

[[email protected] mnt]# gzip -c passwd >passwd.gz

[[email protected] mnt]# ll

-rw-r--r--. 1 root root 362 3月  13 00:11 passwd

-rw-r--r--. 1 root root 205 3月  13 00:12 passwd.gz

[[email protected] mnt]# zcat passwd.gz

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

zhangsan:x:503:504::/home/zhangsan:/bin/bash

tomcat:x:496:493::/mydata:/sbin/nologin

ddd:x:505:506::/home/ddd:/bin/bash


下面说明的解压缩命令

[[email protected] opt]# ll

-rw-r--r--. 1 root root 25 3月  13 00:05 book.gz

-rw-r--r--. 1 root root 14 3月  12 23:53 world.bz2

-rw-r--r--. 1 root root 32 3月  13 00:02 zhang.xz

[[email protected] opt]# gunzip book.gz

[[email protected] opt]# bunzip2 world.bz2

[[email protected] opt]# unxz zhang.xz

[[email protected] opt]# ll

-rw-r--r--. 1 root root 0 3月  13 00:05 book

-rw-r--r--. 1 root root 0 3月  12 23:53 world

-rw-r--r--. 1 root root 0 3月  13 00:02 zhang


关于文件的压缩,常见的 gz 和 bz2格式居多,要多加练习并熟练掌握

 

最后,我们看看打包并压缩。

不解释,直接上图说明

[[email protected] mnt]# ll

-rw-r--r--. 1 root root  362 3月  1300:11 passwd

drwxr-xr-x. 2 root root 4096 3月  13 00:32 test

[[email protected] mnt]# tar -zcvfpasswd.tar.gz passwd

passwd

[[email protected] mnt]# tar -jcvftest.tar.bz2 test

test/

[[email protected] mnt]# ll

-rw-r--r--. 1 root root  362 3月  1300:11 passwd

-rw-r--r--. 1 root root  289 3月  1300:35 passwd.tar.gz

drwxr-xr-x. 2 root root 4096 3月  13 00:32 test

-rw-r--r--. 1 root root  110 3月  1300:35 test.tar.bz2

 

下面是解压缩到过程

[[email protected] mnt]# ll

-rw-r--r--. 1 root root 289 3月  13 00:35 passwd.tar.gz

-rw-r--r--. 1 root root 110 3月  13 00:35 test.tar.bz2

[[email protected] mnt]# tar -zxvfpasswd.tar.gz

passwd

[[email protected] mnt]# tar -jxvftest.tar.bz2

test/

[[email protected] mnt]# ll

-rw-r--r--. 1 root root  362 3月  1300:11 passwd

-rw-r--r--. 1 root root  289 3月  1300:35 passwd.tar.gz

drwxr-xr-x. 2 root root 4096 3月  13 00:32 test

-rw-r--r--. 1 root root  110 3月  1300:35 test.tar.bz2

 

        解压缩默认情况下是解压到当前目录,可以使用 参数 C 来定义解压后的存放地点。如下面所示:

[[email protected] opt]# ll

-rw-r--r--. 1 root root 0 3月  13 00:02 zhang

[[email protected] opt]# cd /mnt/

[[email protected] mnt]# ll

-rw-r--r--. 1 root root  362 3月  1300:11 passwd

-rw-r--r--. 1 root root  289 3月  1300:35 passwd.tar.gz

drwxr-xr-x. 2 root root 4096 3月  13 00:32 test

-rw-r--r--. 1 root root  110 3月  1300:35 test.tar.bz2

[[email protected] mnt]# tar -zxvfpasswd.tar.gz -C /opt/

passwd

[[email protected] mnt]# ll /opt/

-rw-r--r--. 1 root root 362 3月  13 00:11 passwd

-rw-r--r--. 1 root root   0 3月  1300:02 zhang

 

最后,需要要注意说明的几点: 

        1. 打包和压缩是两个不用的概念,不要相互混淆。

        2. 压缩只能够针对文件做操作,不能够针对目录。

        3. 可以只打包不压缩,也可以只压缩不打包,当然,我们一般既打包也压缩。

        4. 打包和打包压缩语法,不能够顺序写反了。

            具体为: 命令 + 参数 + 打包或打包压缩后的文件名+ 被打包的文件

 

 

 


本文出自 “惹尘埃” 博客,请务必保留此出处http://liangww.blog.51cto.com/9468518/1757357

以上是关于小谈 LINUX 中的打包与压缩的主要内容,如果未能解决你的问题,请参考以下文章

说说 Linux 中的压缩与解压缩指令(tar)

linux中文件压缩与打包

Linux文件系统的压缩与打包

Linux下文件的打包与压缩(tar命令)

linux常用打包命令

Linux打包压缩与解压详解