tar命令的介绍
saves many files together into a single tape or disk archive, and can restore individual files from the archive.(保存许多文件到一个磁带或磁盘归档,并且可以从归档里恢复单个文件。)
tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定目录、文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的,特别是在网络传输的时候,同样大小的一个文件要多少文件传输的效率更高。
在这里我们先要区分两个概念:打包和压缩,在Linux下这是两个不同的东西,打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。在Linux下常用的打包命令就是tar,当然还有cpio命令,功能和tar相关不大,在这里我们就多做说明了。压缩命令有gzip,bzip2等。gzip命令在我们后面学习数据库使用mysqldump命令备份数据库的时候会用到。
在linux下我们习惯的操作是先用tar命令打包,再然后再对打包文件进行压缩。
tar命令的格式及常用参数
命令格式:tar参数 打包后的文件名 被打包的目录或者文件
常用参数:-c建立新的归档文件
-t显示归档文件的内容
-x从归档文件里提取文件
-r添加文件到已存在的归档文件中
-f指定归档文件,注意f后面要直接接归档的文件名,不能再添加其他参数。
-v显示执行的过程
-z使用gzip方式压缩或者解压缩打包文件。
-j使用bzip2方式压缩或者解压缩打包文件。
-C解包到指定目录,执行过程是先切换到指定的目录,然后再执行解包操作。
--exclude排除某个文件或者目录
-p保持属性不变
-A合并两个归档文件,如果有同名的文件,这两个文件都保留。
-u选项,向归档中添加文件时,如果文件同名,则新文件如果比原文件更新才更新,否则不更新(同过时间戳来区分)。
-d比较归档中与文件系统中的同名文件是否相同。
--delete从给定的归档文件中删除文件
-X排除指定文件里包含的文件。
tar命令使用实例
1、打包oldboy目录下的所有目录和文件(提示打包目录的时候,最好是在目录的上一级目录进行打包)
[root@oldboy ~]#tar cvf oldboy.tar oldboy
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/nginx.conf
oldboy/xiaofan/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboy ~]#ll oldboy.tar
-rw-r--r-- 1 root root10240 2016/03/10 14:54:52 oldboy.tar
[root@oldboy ~]#
2、查看oldboy.tar包中的内容
[root@oldboy ~]#tar -tf oldboy.tar
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/nginx.conf
oldboy/xiaofan/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboy ~]#
3、移到oldboy.tar到/tmp目录,并解包。
[root@oldboy ~]# mvoldboy.tar /tmp
[root@oldboy ~]# cd /tmp
[root@oldboy tmp]# lloldboy.tar
-rw-r--r-- 1 root root10240 2016/03/10 14:54:52 oldboy.tar
[root@oldboytmp]# tar -xvf oldboy.tar
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/nginx.conf
oldboy/xiaofan/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboy tmp]# ll
总用量16
drwxr-xr-x7 root root4096 2016/03/08 15:55:24 oldboy
-rw-r--r--1 root root 10240 2016/03/10 14:54:52oldboy.tar
-rw-------. 1 rootroot0 2016/03/06 16:21:46 yum.log
[root@oldboy tmp]# cdoldboy
[root@oldboy oldboy]# ll
总用量24
drwxr-xr-x 3 root root 40962016/03/08 14:30:15 ext
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 jeacen
-rw-r--r-- 1 root root111 2016/03/08 15:55:24 nginx.conf
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 oldboy
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 test
lrwxrwxrwx 1 root root4 2016/03/10 15:08:02 wd -> ext/
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 wodi.gz
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xiaodong
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xiaofan
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xingfujie
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 yingsui.gz
[root@oldboy oldboy]#
4、添加yum.log文件到oldboy.tar包。
[root@oldboy tmp]# ll
总用量16
drwxr-xr-x7 root root4096 2016/03/08 15:55:24 oldboy
-rw-r--r--1 root root 10240 2016/03/10 14:54:52oldboy.tar
-rw-------. 1 rootroot0 2016/03/06 16:21:46 yum.log
[root@oldboytmp]# tar -rf oldboy.tar yum.log
[root@oldboytmp]# tar -tf oldboy.tar
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/nginx.conf
oldboy/xiaofan/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
yum.log
[root@oldboy tmp]#
5、打包oldboy目录,并采用gzip格式压缩,并查看压缩包的内容,然后移动到/tmp目录下解压。
[root@oldboy ~]#tar -czvf oldboy.tar.gz oldboy
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/nginx.conf
oldboy/xiaofan/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboy ~]#ll oldboy.tar.gz
-rw-r--r-- 1 root root 4062016/03/10 15:34:04 oldboy.tar.gz
[root@oldboy ~]#tar -tzf oldboy.tar.gz
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/nginx.conf
oldboy/xiaofan/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboy ~]# mvoldboy.tar.gz /tmp
[root@oldboy ~]# cd /tmp
[root@oldboy tmp]# rmoldboy -rf
[root@oldboy tmp]# ll
总用量16
-rw-r--r--1 root root 10240 2016/03/10 15:11:30oldboy.tar
-rw-r--r--1 root root406 2016/03/10 15:34:04 oldboy.tar.gz
-rw-------. 1 rootroot0 2016/03/06 16:21:46 yum.log
[root@oldboytmp]# tar xzvf oldboy.tar.gz
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/nginx.conf
oldboy/xiaofan/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboy tmp]# ll
总用量20
drwxr-xr-x7 root root4096 2016/03/10 15:28:38 oldboy
-rw-r--r--1 root root 10240 2016/03/10 15:11:30oldboy.tar
-rw-r--r--1 root root406 2016/03/10 15:34:04 oldboy.tar.gz
-rw-------. 1 rootroot0 2016/03/06 16:21:46 yum.log
[root@oldboy tmp]# lloldboy
总用量24
drwxr-xr-x 3 root root 40962016/03/08 14:30:15 ext
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 jeacen
-rw-r--r-- 1 root root111 2016/03/08 15:55:24 nginx.conf
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 oldboy
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 test
lrwxrwxrwx 1 root root4 2016/03/10 15:35:13 wd -> ext/
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 wodi.gz
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xiaodong
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xiaofan
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xingfujie
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 yingsui.gz
[root@oldboy tmp]#
6、打包oldboy目录,并采用bzip2格式压缩,并查看压缩包的内容,然后移动到/tmp目录下解压
[root@oldboytmp]# tar -cjvf oldboy.tar.bz oldboy
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/nginx.conf
oldboy/xiaofan/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboy tmp]# lloldboy.tar.bz
-rw-r--r-- 1 root root 3892016/03/10 16:03:09 oldboy.tar.bz
[root@oldboy tmp]# ll
总用量24
drwxr-xr-x7 root root4096 2016/03/10 15:28:38 oldboy
-rw-r--r--1 root root 10240 2016/03/10 15:11:30oldboy.tar
-rw-r--r--1 root root389 2016/03/10 16:03:09 oldboy.tar.bz
-rw-r--r--1 root root406 2016/03/10 15:34:04 oldboy.tar.gz
-rw-------. 1 rootroot0 2016/03/06 16:21:46 yum.log
[root@oldboy tmp]# rmoldboy -rf
[root@oldboy tmp]# ll
总用量20
-rw-r--r--1 root root 10240 2016/03/10 15:11:30oldboy.tar
-rw-r--r--1 root root389 2016/03/10 16:03:09 oldboy.tar.bz
-rw-r--r--1 root root406 2016/03/10 15:34:04 oldboy.tar.gz
-rw-------. 1 rootroot0 2016/03/06 16:21:46 yum.log
[root@oldboytmp]# tar tjf oldboy.tar.bz
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/nginx.conf
oldboy/xiaofan/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboytmp]# tar -xjvf oldboy.tar.bz
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/nginx.conf
oldboy/xiaofan/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboy tmp]# ll
总用量24
drwxr-xr-x7 root root4096 2016/03/10 15:28:38 oldboy
-rw-r--r--1 root root 10240 2016/03/10 15:11:30oldboy.tar
-rw-r--r--1 root root389 2016/03/10 16:03:09 oldboy.tar.bz
-rw-r--r--1 root root406 2016/03/10 15:34:04 oldboy.tar.gz
-rw-------. 1 rootroot0 2016/03/06 16:21:46 yum.log
[root@oldboy tmp]# lloldboy
总用量24
drwxr-xr-x 3 root root 40962016/03/08 14:30:15 ext
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 jeacen
-rw-r--r-- 1 root root111 2016/03/08 15:55:24 nginx.conf
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 oldboy
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 test
lrwxrwxrwx 1 root root4 2016/03/10 16:04:56 wd -> ext/
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 wodi.gz
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xiaodong
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xiaofan
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xingfujie
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 yingsui.gz
[root@oldboy tmp]#
7、打包时排除目录xiaofan、文件nginx.conf
[root@oldboy tmp]# lloldboy
总用量24
drwxr-xr-x 3 root root 40962016/03/08 14:30:15 ext
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 jeacen
-rw-r--r-- 1 root root111 2016/03/08 15:55:24 nginx.conf
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 oldboy
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 test
lrwxrwxrwx 1 root root4 2016/03/10 16:04:56 wd -> ext/
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 wodi.gz
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xiaodong
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xiaofan
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xingfujie
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 yingsui.gz
[root@oldboy tmp]#
[root@oldboytmp]# tar -czvf oldboy.tar.gz --exclude="xiaofan"--exclude=nginx.conf oldboy/
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboytmp]# tar -tzf oldboy.tar.gz
oldboy/
oldboy/ext/
oldboy/ext/oldboy/
oldboy/wd
oldboy/yingsui.gz
oldboy/jeacen
oldboy/test/
oldboy/oldboy
oldboy/xiaodong/
oldboy/xingfujie/
oldboy/wodi.gz
[root@oldboy tmp]#
8、从oldboy.tar解压到/tmp目录下
[root@oldboy ~]#tar -xf oldboy.tar -C "/tmp"
[root@oldboy ~]# cd /tmp
[root@oldboy tmp]# ll
总用量8
-rw-r--r-- 1 root root407 2016/03/10 16:16:27 --exclude
drwxr-xr-x 7 root root 40962016/03/08 15:55:24 oldboy
[root@oldboy tmp]# cdoldboy/
[root@oldboy oldboy]# ll
总用量24
drwxr-xr-x 3 root root 40962016/03/08 14:30:15 ext
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 jeacen
-rw-r--r-- 1 root root111 2016/03/08 15:55:24 nginx.conf
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 oldboy
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 test
lrwxrwxrwx 1 root root4 2016/03/10 16:55:40 wd -> ext/
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 wodi.gz
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xiaodong
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xiaofan
drwxr-xr-x 2 root root 40962016/03/08 14:30:15 xingfujie
-rw-r--r-- 1 root root0 2016/03/08 14:30:23 yingsui.gz
[root@oldboy oldboy]#
9、
Linux下常用的压缩命令简单介绍
1、gzip命令
gzip命令是Linux下常用的压缩命令,但是他只能压缩单个文件或数据流,不能对目录和多个文档进行归档,通常的做法是先用tar命令归档,然后使用-z参数同时进行压缩。
[root@oldboy test]# ll
总用量48
-rw-r--r-- 1 root root48894 2016/03/10 17:08:53 test.txt
使用gzip命令压缩test.txt文件
[root@oldboytest]# gzip test.txt
[root@oldboy test]# ll
总用量24
-rw-r--r-- 1 root root22629 2016/03/10 17:08:53 test.txt.gz
使用-l参数列出压缩文件的属性信息。
[root@oldboy test]#gzip -l test.txt.gz
compresseduncompressedratio uncompressed_name
226294889453.8% test.txt
使用gunzip命令解压test.txt.gz文件。
[root@oldboytest]# gunzip test.txt.gz
[root@oldboy test]# ll
总用量48
-rw-r--r-- 1 root root48894 2016/03/10 17:08:53 test.txt
[root@oldboy test]#
2、bzip2命令
是另一种常用的压缩工具,功能和语法同gzip非常类似,唯一不同的在于bzip2的压缩效率比gzip更高,但花费的压缩时间更长。
[root@oldboy test]# ll
总用量48
-rw-r--r-- 1 root root48894 2016/03/10 17:08:53 test.txt
[root@oldboytest]# bzip2 test.txt
[root@oldboy test]# ll
总用量12
-rw-r--r-- 1 root root10443 2016/03/10 17:08:53 test.txt.bz2
[root@oldboytest]# bunzip2 test.txt.bz2
[root@oldboy test]# ll
总用量48
-rw-r--r-- 1 root root48894 2016/03/10 17:08:53 test.txt
[root@oldboy test]#
3、zip命令
zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。
1)同时压缩test1.txt
test3.txt test.txt三个文件,生成test.zip压缩文件
[root@oldboytest]# zip test.zip test1.txt test3.txt test.txt
adding: test1.txt (deflated 54%)
adding: test3.txt (deflated 54%)
adding: test.txt (deflated 54%)
[root@oldboy test]#
[root@oldboy test]# ll
总用量212
-rw-r--r-- 1 root root48894 2016/03/10 17:18:30 test1.txt
-rw-r--r-- 1 root root48894 2016/03/10 17:18:34 test3.txt
-rw-r--r-- 1 root root48894 2016/03/10 17:08:53 test.txt
-rw-r--r-- 1 root root68264 2016/03/10 17:19:03 test.zip
2)对oldboy目录进行压缩
[root@oldboytest]# zip -r oldboy.zip oldboy/
adding: oldboy/ (stored 0%)
adding: oldboy/test.txt (deflated 54%)
adding: oldboy/test3.txt (deflated 54%)
adding: oldboy/test1.txt (deflated 54%)
[root@oldboy test]# ll
总用量140
drwxr-xr-x 2 root root4096 2016/03/10 17:20:04 oldboy
-rw-r--r-- 1 root root68448 2016/03/10 17:22:43 oldboy.zip
-rw-r--r-- 1 root root68264 2016/03/10 17:19:03 test.zip
[root@oldboy test]#
3)使用unzip命令从oldboy.zip文件中提取内容
[root@oldboytest]# unzip oldboy.zip
Archive:oldboy.zip
creating: oldboy/
inflating: oldboy/test.txt
inflating: oldboy/test3.txt
inflating: oldboy/test1.txt
[root@oldboy test]# ll
总用量140
drwxr-xr-x 2 root root4096 2016/03/10 17:20:04 oldboy
-rw-r--r-- 1 root root68448 2016/03/10 17:22:43 oldboy.zip
-rw-r--r-- 1 root root68264 2016/03/10 17:19:03 test.zip
[root@oldboy test]# cdoldboy
[root@oldboy oldboy]# ll
总用量144
-rw-r--r-- 1 root root48894 2016/03/10 17:18:30 test1.txt
-rw-r--r-- 1 root root48894 2016/03/10 17:18:34 test3.txt
-rw-r--r-- 1 root root48894 2016/03/10 17:08:53 test.txt
[root@oldboy oldboy]# cd ..
[root@oldboy test]#
这里面有一点需要说明的就是unzip提取文件后不会删除原来的压缩文件,这一点上与gzip不同。
4、
课后作业题解答
12./etc/目录为系统的默认配置文件及服务启动命令目录
a.请用tar打包/etc整个目录(打包及压缩整个目录(打包及压缩)
b.请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)
c.请把a点命令的压缩包,解到/tmp指定目录下(最好只用tar命令实现)
解答
a、
tar -czvf etc.tar.gz etc/
b、
tar -czvf etc.tar.gz--exclude="services" etc/
[root@oldboy /]# tar -tvfetc.tar.gz|grep services
-rw-r--r-- root/root726 2013-11-23 21:52etc/init/readahead-disable-services.conf
[root@oldboy /]#
c、
tar -xzvf etc.tar.gz -C/tmp
[root@oldboy /]# ll /tmp
总用量12
drwxr-xr-x 82 root root4096 2016/03/10 13:41:43 etc
-rw-r--r--1 root root407 2016/03/10 16:16:27 --exclude
drwxr-xr-x7 root root 4096 2016/03/08 15:55:24 oldboy
[root@oldboy /]#