tar命令

在Linux系统里,tar是将多个文件打包在一起,并且可以实现解压打包的文件的命令。是系统管理员最常用的命令之一,tar命令不但可以实现对多个文件进行打包,还可以对多个文件打包后进行压缩。
打包是指将一大堆文件或目录变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
tar命令选项的使用有点特殊,对于CentOS、Linux来说,“tar -z”和“tar z”的效果相同,加或不加“”这个符号都是可以的。

tar命令选项

z            通过gzip压缩或解压
c            创建新的tar包菜
v            显示详细的tar命今执行过程
f            指定压缩文件的名字
t            不解压查看tar包的内容
p            保持文件的原有属性
P(大写)     以绝对路径打包,危险参数
j            通过bzip2命令压缩或解压
x            解开tar包旅
C            指定解压的目录路径
-exclude=PATTERN    打包时排除不需要处理的文件或目录
-X 文件名    从指定文件读取不需要处理的文件或目录列表
-N 日期      仅打包比指定日期新的文件,可用于增量打包备份
-h                    打包软链接文件指向的真实源文件激
-hard-dereference     打包硬链接文件

备份站点目录html

[root@cs6 ~]# mkdir -p /var/www/html/oldboy/test
[root@cs6 ~]# touch /var/www/html/{1..10}.html
[root@cs6 ~]# ls /var/www/html/
10.html  1.html  2.html  3.html  4.html  5.html  6.html  7.html  8.html  9.html  oldboy
[root@cs6 ~]# cd /var/www/
[root@cs6 www]# ls
html
[root@cs6 www]# tar zcvf www.tar.gz ./html
./html/
./html/4.html
./html/7.html
./html/oldboy/
./html/oldboy/test/
./html/9.html
./html/2.html
./html/5.html
./html/3.html
./html/6.html
./html/10.html
./html/1.html
./html/8.html
[root@cs6 www]# ll -h www.tar.gz
-rw-r--r--. 1 root root 255 May 12 18:20 www.tar.gz[root@cs6 www]# tar ztvf www.tar.gz  #<一使用选项-t不解压就可以查看压缩包的内容,选项v可以显示文件的属性。
drwxr-xr-x root/root         0 2019-05-12 18:19 ./html/
-rw-r--r-- root/root         0 2019-05-12 18:19 ./html/4.html
-rw-r--r-- root/root         0 2019-05-12 18:19 ./html/7.html
drwxr-xr-x root/root         0 2019-05-12 18:19 ./html/oldboy/
drwxr-xr-x root/root         0 2019-05-12 18:19 ./html/oldboy/test/
-rw-r--r-- root/root         0 2019-05-12 18:19 ./html/9.html
-rw-r--r-- root/root         0 2019-05-12 18:19 ./html/2.html
-rw-r--r-- root/root         0 2019-05-12 18:19 ./html/5.html
-rw-r--r-- root/root         0 2019-05-12 18:19 ./html/3.html
-rw-r--r-- root/root         0 2019-05-12 18:19 ./html/6.html
-rw-r--r-- root/root         0 2019-05-12 18:19 ./html/10.html
-rw-r--r-- root/root         0 2019-05-12 18:19 ./html/1.html
-rw-r--r-- root/root         0 2019-05-12 18:19 ./html/8.html[root@cs6 www]# tar ztf www.tar.gz #<==省略v选项。
./html/
./html/4.html
./html/7.html
./html/oldboy/
./html/oldboy/test/
./html/9.html
./html/2.html
./html/5.html
./html/3.html
./html/6.html
./html/10.html
./html/1.html
./html/8.html
[root@cs6 www]# tar tf www.tar.gz #<=如果不指定z选项,那么tar命令也会自动判断压缩包的类型,自动调用gzip命令。
./html/
./html/4.html
./html/7.html
./html/oldboy/
./html/oldboy/test/
./html/9.html
./html/2.html
./html/5.html
./html/3.html
./html/6.html
./html/10.html
./html/1.html
./html/8.html

解开压缩包

[root@cs6 www]# tar zxvf www.tar.gz -C /tmp/
./html/
./html/4.html
./html/7.html
./html/oldboy/
./html/oldboy/test/
./html/9.html
./html/2.html
./html/5.html
./html/3.html
./html/6.html
./html/10.html
./html/1.html
./html/8.html
[root@cs6 www]# ls /tmp/html/
10.html  1.html  2.html  3.html  4.html  5.html  6.html  7.html  8.html  9.html  oldboy
[root@cs6 www]# tar xf www.tar.gz -C /tmp/ #去掉v选项也可以,只要涉及解压的操作,tar命令都能自动识别压缩包的质缩类型,但是压缩时必须要加上z选项。

排除打包

[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test
./html/                                                #<==test目录结尾不要加/,否则不会成功。
./html/4.html
./html/7.html
./html/oldboy/
./html/9.html
./html/2.html
./html/5.html
./html/3.html
./html/6.html
./html/10.html
./html/1.html
./html/8.html
[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test --exclude=html/oldboy
./html/                #<-=排除2个以上目录的方法:并列使用多个--exclude。
./html/4.html
./html/7.html
./html/9.html
./html/2.html
./html/5.html
./html/3.html
./html/6.html
./html/10.html
./html/1.html
./html/8.html

排除多个文件打包参数-X

[root@cs6 www]# cat list.txt
10.html
8.html
1.html
7.html
5.html
[root@cs6 www]# tar zcvfX paichu.tar.gz list.txt ./html/
./html/
./html/4.html
./html/oldboy/
./html/oldboy/test/
./html/9.html
./html/2.html
./html/3.html
./html/6.html

打包链接文件

[root@cs6 www]# cd /etc/
[root@cs6 etc]# tar zcf local.tar.gz ./rc.local
[root@cs6 etc]# tar tvf local.tar.gz
lrwxrwxrwx root/root         0 2019-05-05 23:11 ./rc.local -> rc.d/rc.local
[root@cs6 etc]# tar zcfh local_h.tar.gz ./rc.local
[root@cs6 etc]# tar tvf local_h.tar.gz
-rwxr-xr-x root/root       220 2018-06-20 00:12 ./rc.local

通过对比压缩包内的文件类型,大家应该可以看出其中的区别了吧?用tar的通用选项zcf打包文件时,如果这个文件是链接文件如/etc/rc.local,那么tar只会对链接文件本身打包,而不是对链接文件指向的真实文件打包,因此需要额外使用-h选项将软链接文件对应的实体文件打包。
2.技巧性范例

解决tar使用-exclude 选项时遇到的问题。

使用tar的时候,有时候需要排除要压缩的目录下的某个子目录,但此时可能会遇到一个问题,这和要压缩目录的相对路径和绝对路径的选择有关。比如:
[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=/var/www/html/oldboy/test
./html/                                #<==打包路径为相对路径,--exclude的路径为绝对路径。
./html/4.html
./html/7.html
./html/oldboy/
./html/oldboy/test/            #<==没有成功排除。
./html/9.html
./html/2.html
./html/5.html
./html/3.html
./html/6.html
./html/10.html
./html/1.html
./html/8.html
[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test
./html/            #<==打包路径为相对路径,--exclude的路径为相对路径。
./html/4.html
./html/7.html
./html/oldboy/
./html/9.html
./html/2.html
./html/5.html
./html/3.html
./html/6.html
./html/10.html
./html/1.html
./html/8.html[root@cs6 www]# tar zcvf www.tar.gz ./html/ --exclude=oldboy/test
./html/            #<==--exclude的相对路径去掉html也可以。
./html/4.html
./html/7.html
./html/oldboy/
./html/9.html
./html/2.html
./html/5.html
./html/3.html
./html/6.html
./html/10.html
./html/1.html
./html/8.html[root@cs6 www]# tar zcvf www.tar.gz /var/www/html/ --exclude=/var/www/html/oldboy/test
tar: Removing leading `/' from member names            #<==打包路径为绝对路径,--exclude的路径为绝对路径。
/var/www/html/
/var/www/html/4.html
/var/www/html/7.html
/var/www/html/oldboy/
/var/www/html/9.html
/var/www/html/2.html
/var/www/html/5.html
/var/www/html/3.html
/var/www/html/6.html
/var/www/html/10.html
/var/www/html/1.html
/var/www/html/8.html[root@cs6 www]# tar zcvf www.tar.gz /var/www/html/ --exclude=html/oldboy/test
tar: Removing leading `/' from member names        #<==打包路径为绝对路径,--exclude的路径为相对路径。
/var/www/html/
/var/www/html/4.html
/var/www/html/7.html
/var/www/html/oldboy/
/var/www/html/9.html
/var/www/html/2.html
/var/www/html/5.html
/var/www/html/3.html
/var/www/html/6.html
/var/www/html/10.html
/var/www/html/1.html
/var/www/html/8.html[root@cs6 www]# tar zcvf www.tar.gz /var/www/html/ --exclude=oldboy/test
tar: Removing leading `/' from member names    #<== --exclude的相对路径去择html也可以。
/var/www/html/
/var/www/html/4.html
/var/www/html/7.html
/var/www/html/oldboy/
/var/www/html/9.html
/var/www/html/2.html
/var/www/html/5.html
/var/www/html/3.html
/var/www/html/6.html
/var/www/html/10.html
/var/www/html/1.html
/var/www/html/8.html

若需要打包的目录为相对路径,则-exclude后只能接相对路径。
若需要打包的目录为绝对路径,则--exclude后既能接绝对路径也能接相对路径。
为方便起见,--exclude的后接路径和打包路径应保持形式一致,要么都是相对路径,要么都是绝对路径。

打包/etc目录下所有的普通文件

[root@cs6 /]# ls etc
adjtime            DIR_COLORS               init.d          motd   [root@cs6 /]# tar zcvf /tmp/etc.tar.gz `find etc/ -type f`    #<==使用find找到所有的普通文件,在tar上命令语句中嵌套一个反引号包含的find命令语句。
[root@cs6 /]# ll -h /tmp/etc.tar.gz
-rw-r--r--. 1 root root 8.7M May 12 18:46 /tmp/etc.tar.gz

经验技巧
下面列出打包时的经验技巧以供大家参考。
1)在打包一个目录之前,先进入到这个目录的上一级目录,然后执行打包命令,这是大部分情况下打包文件的规范操作流程。少数情况下打包需要完整的目录结构时,也可以使用绝对路径打包,但是需要注意的是解压tar包时压缩包内的文件是否会覆盖原始文件。
2)打包模型为:tar zcf /路径/筐tar.gz 相对路径/苹果。打包其实就是把苹果放筐里。

6.1 tar:打包备份相关推荐

  1. linux++tar打包目录,linux中tar命令打包目录与排除目录打包linux操作系统 -电脑资料...

    本文章来给各位朋友详细介绍关于linux中tar命令打包目录与排除目录打包有需要了解tar命令的使用方法的朋友可进行参考参考, 打包压缩目录很简单如下代码如下复制代码 tar -czf small.t ...

  2. gzip,bzip2压缩工具及tar打包工具

             gzip,bzip2压缩工具及tar打包工具 1.gzip压缩工具    1>参数:         -c:将参数的数据输出到屏幕上,可通过数据流重定向来处理         ...

  3. tar打包时排除一些文件或者目录

    From: http://www.blogjava.net/zhyiwww/archive/2012/08/23/386119.html 用tar打包时排除文件: 可以使用-exclude参数 如:  ...

  4. Linux指令:tar打包与压缩

    tar命令介绍 1.下面5个参数只能选择其中之一 -c: 建立压缩档案-x: 解压-t: 查看内容-r: 向压缩归档文件末尾追加文件-u: 更新原压缩包中的文件 2.以下参数为可选项,可与上面参数一同 ...

  5. 四周第五次课(1月6日) 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩

    四周第五次课(1月6日) 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 tar命令: 可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以 ...

  6. linux tar源码,linux之tar命令备份

    大家好 我是都百顺 我的QQ:136882447  Linux学习交流群:225961139 官方网站:www.wmphp.com 下讲我来给大家讲解,使用 教程下载地址:http://pan.bai ...

  7. linux打包tar包命令,Linux tar打包命令详解

    Linux 系统中,最常用的归档(打包)命令就是 tar,该命令可以将许多文件一起保存到一个单独的磁带或磁盘中进行归档.不仅如此,该命令还可以从归档文件中还原所需文件,也就是打包的反过程,称为解打包. ...

  8. tar打包split分割分解拆分大包文件

    2010-01-26 12:47 http://hi.baidu.com/hovlj_1130/item/fe21d8342e68aa86c3cf2928 tar打包split分割分解拆分大包文件 有 ...

  9. linux tar 打包gzip,tar linux 打包 压缩 gzip 命令说明

    参数: -c  :建立一个压缩档案的参数指令(create 的意思): -x  :解开一个压缩档案的参数指令! -t  :查看 tarfile 里面的档案! 特别注意,在参数的下达中, c/x/t 仅 ...

最新文章

  1. linkerd——针对java的为微服务提供可靠性的proxy,服务发现重试LB等
  2. Learning Perl 8
  3. RHEL 5.4 安装Oracle 11gR2, 安装篇1...
  4. 0218互联网新闻 | 《流浪地球》IMAX中国票房破3亿;苹果发力智能家居
  5. QTP简单框架(6)之脚本编写实例
  6. Dns-prefetch DNS 预解析优化页面加载速度
  7. python 泰坦尼克号存活率分析
  8. w10自动删除文件怎么关了_绝地求生怎么删除新地图_删新沙漠地图文件办法
  9. [转载] Java 单例(Singleton)类
  10. 14.凤凰架构:构建可靠的大型分布式系统 --- 资源与调度
  11. 图像去雾算法(一)相关研究及链接
  12. MongoDB学习笔记(查询)
  13. 2018百度之星程序设计大赛初赛B——1004p1m2
  14. HA-reshacker
  15. 什么是软件项目验收,软件项目验收测试方法分享
  16. impala与hive标准差函数的差异
  17. 匿名管道和命名管道(代码剖析)
  18. supersu-v2.8.2.zip_术业有专攻:ZIP文件操作模块zipfile
  19. 多光谱(RGB-T)语义分割2019-RTFNet总结
  20. form表单及其连用标签总结

热门文章

  1. 1102示波器使用方法_你知道示波器的探头是怎样工作的吗?示波器探头的使用方法...
  2. linux批量安装 五大开源软件挨个看,51CTO_Linux运维和管理:自动化监测.pdf
  3. 怎么看python环境变量配置是否好了验证图片_python 的 tesserocr 模块安装与获取图片验证码...
  4. dedeampz mysql启动不了_localhost打不开?dedeampz环境启动不了?本地php环境启动失败?...
  5. 再见Xshell!这个开源的终端工具更酷炫!
  6. Python赋值、打包和解包,90%人不清楚的知识点!
  7. 这100道面试题,用来忽悠半吊子面试官
  8. Python中的魔法属性
  9. php的long类型转换,[PHP]将RGB或HEX转换为“Long Int”颜色
  10. web.xml中的ContextLoaderListener和DispatcherServlet区别