博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tar命令详解
阅读量:4949 次
发布时间:2019-06-11

本文共 2606 字,大约阅读时间需要 8 分钟。

以三大常见操作为序说明。

1、备份

引用
-d, --diff, --compare
  找出归档文件和文件系统的不同之处
-r, --append
  将文件附加到归档文件之后
-u, --update
  只附加比归档中新的文件
-A, --catenate
  将 tar 文件附加到归档文件之后
--concatenate
  与 -A 相同
--delete
  从归档文件中删除  (不能在磁带上!)
-N date, --newer=date, --after-date=date
  只将比指定日期更新的文件保存到备份文件
--exclude=pattern
  排除符合查找模式的文件
-P, --absolute-names
  备份文件中的文件名使用绝对路径,而不移除文件名前的“/”,默认是相对路径的
-l, --one-file-system
  复制文件或目录存放的文件系统必须和tar命令当前执行的文件系统相同,否则不执行;也就是讲,不处理其他分区的文件。( 可忽略mount挂载分区的问题)
--mode=permissions
  备份时,把加入备份文件中的文件属性修改为指定的属性,格式和chmod命令接受的格式相同
--group=group
  备份时,把加入备份文件中的文件所属组设定成指定的组
--owner=owner
  备份时,把把加入备份文件中的文件所有者设定成指定的用户
--numeric-owner
  以UID和GID代替用户名和组名
--recursion
  递归模式(默认)
--no-recursion
  不进行递归处理,即不把指定目录下的所有文件和文件夹都备份
--newer-mtime=date 
  Add only files whose contents have changed since date to the archive.
  仅增加指定日期后修改过内容的文件到备份文件中
--anchored
  排除时,排除匹配式中匹配整个文件路径(默认)
--no-anchored
  排除时,排除匹配式中可匹配“/”后的路径
--ignore-case
  排除时,排除匹配式中忽略大小写
--no-ignore-case
  排除时,排除匹配式中大小写敏感(默认)
--wildcards
  排除匹配式支持通配符(默认)
--no-wildcards
  排除匹配式不支持通配符
--wildcards-match-slash
  排除匹配式的通配符匹配“/”(默认)
--no-wildcards-match-slash
  排除匹配式的通配符不匹配“/”
-X file, --exclude-from file 
  指定样式文件,供程序执行时剔除符合条件的文件
--remove-files
  删除已经加入到备份文件中的文件

举例:
创建当前目录的全备份到backup.tar文件
(使用find的原因是,这样可以打包所有隐含文件或不符合命令规范的文件和目录)

tar cvf - `find . -print` > backup.tar

比2005年6月1日新的文件才会备份

tar -N '2005/06/01' -zcvf home.tar.gz /home

除/home/dmtsai目录外,/home和/etc目录的所有东西都打包

tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

删除etc.tar文件中的etc/pbm2ppa.conf文件

tar --delete etc/pbm2ppa.conf -vf etc.tar

把tmp.tar文件附加到etc.tar后面

tar -A tmp.tar -vf etc.tar

根据-T参数后的样式文件list.txt,打包/etc中指定的文件,同样的,list.tx默认也是相对路径的

find . -name "*.d" -o -name "*.conf" > list.txt
tar -T list.txt -czvf etc.tar.gz /etc

通过管道,使用一条命令实现上面相同的功能

find . -name "*.d" -o -name "*.conf" | tar -czvf etc.tar.gz -T -

※值得注意几个地方

引用
1)-f后面必须紧跟备份文件,xxx.tar或者xxx.tar.gz
2)使用--delete、-u、-r、-A的时候,后面跟的备份文件都必须为未压缩的,若备份文件已经压缩,需要使用gunzip先解压,操作完后再gzip;
也就是说,不能对tar.gz、tar.bz2等文件直接操作的;
3)备份打包时,默认为相对路径;而排除匹配式默认也是全路径匹配的
所以,在打包时,会提示:“tar: Removing leading `/' from member names”
除非你使用-P参数或特定的参数指定
4)在使用--exclude参数时,需要注意几点:
a)其后可以用“=文件”或“空格 文件”两种方式;
b)其后跟的模式需与前面指定要打包的路径一致,例如:
tar -czvf /tmp/test.tar.gz ./ --exclude ./mysql
tar -czvf /tmp/test.tar.gz * --exclude mysql
tar -czvf /tmp/test.tar.gz /var/lib --exclude /var/lib/mysql
这与find的使用是类同的。
c)若排除的是目录,目录名后面不应该加“/”号,另外,在部分版本的tar中(不同平台或版本较低),需要在目录后面加*号,如“--exclude ./mysql/*”
d)如果要同时排除多个文件或目录,需加入多个--exclude参数,例如:

tar -czvf /tmp/test.tar.gz ./ --exclude ./mysql --exclude ./backup --exclude ./database 

 

                                                                                                                                                        转载:http://www.linuxfly.org/post/190/1/2/

转载于:https://www.cnblogs.com/Daniel-G/archive/2012/11/28/2792595.html

你可能感兴趣的文章
【VMCloud云平台】SCO(五)制作流程(一)
查看>>
从NDK在非Root手机上的调试原理探讨Android的安全机制
查看>>
八大深层志趣——问问你自己到底喜欢做什么工作
查看>>
通过刷bios的方式在win8.1平板上启动windows phone模拟器
查看>>
一道企业shell编程实战题-看看谁能快速搞定
查看>>
Windows Server8下补丁分发配置与iSCSI配置
查看>>
Ubuntu系统(十)-Web服务配置
查看>>
我的友情链接
查看>>
oracle hints的那点事
查看>>
安装多实例造成***S故障
查看>>
在Windows server 2012上部署DPM 2012 SP1 RTM之安装配置
查看>>
Windows Server 2012 R2 Hyper-v 虚拟机连接增强会话模式(通过 VMBus 远程访问)
查看>>
.NET应用架构设计—表模块模式与事务脚本模式的代码编写
查看>>
mysql建用户和修改密码和忘记密码的解决办法
查看>>
Provisioning Services 7.6 入门到精通系列之五:PVS控制台安装
查看>>
老字号“张小泉”上线小程序与酷客多达成战略合作!
查看>>
6个技巧精准捕获百度知道问题
查看>>
FSMT:文件服务器从03迁移到08R2实战演练
查看>>
Windows Server 2008 更改计算机的MAC地址
查看>>
寻找Cydia里面软件安装包deb文件的真实下载地址
查看>>