小谈 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 中的打包与压缩的主要内容,如果未能解决你的问题,请参考以下文章