zoukankan      html  css  js  c++  java
  • tar命令详解

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

    以三大常见操作为序说明。
    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 

  • 相关阅读:
    【iOS】7.4 定位服务->2.1.1 定位
    【iOS】7.4 定位服务->1.0 简介
    1.2.1 OC概述
    5.1 网络基础
    4.4 多线程进阶篇<下>(NSOperation)
    4.3 多线程进阶篇<中>(GCD)
    4.1/4.2 多线程进阶篇<上>(Pthread & NSThread)
    4.0 多线程基础篇
    2.1 -1.0 Xcode(发布时间、使用、快捷键、插件相关)
    一款面试复习应用源码
  • 原文地址:https://www.cnblogs.com/xuxm2007/p/1880534.html
Copyright © 2011-2022 走看看