博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux tar命令疑难解析(经验总结)
阅读量:7070 次
发布时间:2019-06-28

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

linux tar命令疑难解析(多年经验总结)

一、-T:从文件名清单创建tar归档

1、名单文件                                     # find / -name "*.txt" -o -name "*.log" > txtlog.lst2、从文件名清单创建tar归档# tar -czPf log.tgz -T txtlog.lst3、补充:文件名匹配选项(同时影响排除和包括模式串):      --ignore-case          忽略大小写      --no-ignore-case       匹配大小写(默认)      --no-wildcards         逐字匹配字符串      --no-wildcards-match-slash   通配符不匹配‘/’      --wildcards            use wildcards (default)

二、-P, --absolute-names:不要从文件名中清除引导符‘/’

1、有-P——默认还原到原绝对目录下# rm -rf /a1;rm -rf /tmp/*;mkdir -p /a1/a2/a3# tar -cvPWf a1.tar  /a1  补充:-W, --verify在写入以后尝试校验归档/a1//a1/a2//a1/a2/a3/Verify /a1/Verify /a1/a2/Verify /a1/a2/a3/# rm -rf /a1# tar -xvPf a1.tar/a1//a1/a2//a1/a2/a3/# tree /a1/a1`-- a2    `-- a32、无-P——默认还原到当前目录下# rm -rf /a1# rm -rf /tmp/*# mkdir -p /a1/a2/a3# tar -cvf a1.tar  /a1tar: Removing leading `/' from member names/a1//a1/a2//a1/a2/a3/# rm -rf /a1# tar -xvPf a1.tara1/a1/a2/a1/a2/a3/# tree /a1/a1 [error opening dir]# tree ./a1./a1`-- a2    `-- a3

三、-N,--newer=DATE:只打包更新过的文件

# dateTue Jul 15 16:23:54 CST 2014# tar -N "2014/07/14" -cf 15.tar /u01/crs_1/racg        打包压缩比2014/07/14新的文件# tar -tvf 15.tar |grep -v ^d|awk '{print $4,$NF}'2014-07-15 u01/crs_1/racg/tmp/ora.rac1.ons.tmp2014-07-15 u01/crs_1/racg/tmp/ora.RACDB.RACDB1.inst.mode

四、--exclude:打包目录时排除子目录或排除目录中的文件

# mkdir -p /dir1/dir2# touch    /dir1/{a2.txt,a2.log,f2,jpg}# ls /dir1a2.log  a2.txt  dir2  f2  jpg# touch    /dir1/dir2/{f3.txt,f3.log,f3.jpg}# ls /dir1/dir2f3.jpg  f3.log  f3.txt# tar -cvf dir1.tar /dir1 --exclude dir2 --exclude a2.txt --exclude *.log   (排除子目录dir2时不要加/)tar: Removing leading `/' from member names     /dir1//dir1/f2/dir1/jpg

五、打包压缩并分割成多个文件

1、打包并分割# tar cf - /boot |split -b 5m - boot.tar# lsboot.taraa  boot.tarab  boot.tarac  boot.tarad 2、作为整体解包# cat boot.tara* | tar x# du -sh boot18M    boot# du -sh /boot18M    /boot

六、老式的tar增量备份不支持压缩:-u, --update

1、第一次增量# rm -rf test;mkdir test;touch test/a    #建立测试路径与文件 # tar   cvf backup.tar test              #备份资料 test/            test/a 2、第二次增量# touch test/b;echo 123 > test/a         #新增一个档案, 并改动一个档案内容# tar uvf test.tar test                  #更新 (-u 只能处理未压缩的 tarball)test/test/atest/b3、还原# rm -rf test             #清除测试资料  # tar xf test.tar         #解包 tarball# tree test               #查看测试资料test|-- a`-- b

七、GNU 格式的tar增量备份支持压缩:-g

1、完整备份 # rm -rf test;mkdir test;touch test/a               #建立测试环境# tar -g snapshot -zvcf test_full.tgz test          #执行完整备份test/test/a2、第一次增量备份# touch test/b                                       #新增# tar -g snapshot -zvcf test_incremental_1.tgz test  #执行第一次的差量备份test/test/b3、第二次增量备份 # touch test/c;echo 123 > test/a                       #新增+改变# tar -g snapshot -zcf test_incremental_2.tgz test   #执行第二次的差量备份 (注意 tarball 名)# tar ztf test_incremental_2.tgz                     #查看 tarball 内容test/test/atest/c4、还原# rm -rf test                                         #清空测试资料 # tar zxf test_full.tgz                               #开始进行资料还原# tar zxf test_incremental_1.tgz# tar zxf test_incremental_2.tgz5、验证# ls testa b c

八、其它技巧

1、解压其中的两个文件# tar -cf  etc.tar /etctar: Removing leading `/' from member namestar: Removing leading `/' from hard link targets# tar -xvf etc.tar  etc/sysconfig/network  etc/inittabetc/inittabetc/sysconfig/network# tree etcetc|-- inittab`-- sysconfig    `-- network1 directory, 2 files2、-r, --append:追加文件至归档结尾# tar -tvf etc.tar etc/sysconfig/network-rw-r--r-- root/root        48 2011-06-03 23:22:26 etc/sysconfig/network # tar -vf etc.tar --delete etc/sysconfig/network# tar -tvf etc.tar etc/sysconfig/networktar: etc/sysconfig/network: Not found in archivetar: Error exit delayed from previous errors# tar -rvf etc.tar /etc/sysconfig/networktar: Removing leading `/' from member names/etc/sysconfig/network# tar -tvf etc.tar etc/sysconfig/network-rw-r--r-- root/root        48 2011-06-03 23:22:26 etc/sysconfig/network       选项-r向归档文件中添加文件3、-C解到指定目录# rm -rf /etc1;mkdir /etc1# tar -xf etc.tar -C /etc1 # ls /etc1etc4、用-A拼接两个压缩文件# tar -cPf a1.tar /etc/inittab# tar -cPf a2.tar /etc/hosts# tar -Avf a1.tar a2.tar# tar -tvf a1.tar-rw-r--r-- root/root      1869 2014-07-11 14:07:39 /etc/inittab-rw-r--r-- root/root       322 2011-06-03 23:22:26 /etc/hosts5、-v, --verbose:详细地列出处理的文件# tar -cPf b.tar /etc/inittab /etc/hosts# tar tf b.tar/etc/inittab/etc/hosts# tar tvf b.tar-rw-r--r-- root/root      1869 2014-07-11 14:07:39 /etc/inittab-rw-r--r-- root/root       322 2011-06-03 23:22:26 /etc/hosts6、linux磁带操作# tar -tf /dev/st0                         查看磁带文件清单# tar -cf /dev/st0 /var/log               备份指定内容到磁带中# tar -r  /etc/inittab -f /dev/st0        将文件附加到磁带后面# tar -xf /dev/st0 /etc/                  解压指定的文件

九、补充:tar --help帮助翻译(摘要)

1、主操作模式:  -A, --catenate,--concatenate   追加 tar 文件至归档  -c, --create               创建一个新归档  -d, --diff, --compare      找出归档和文件系统的差异      --delete               从归档(非磁带!)中删除  -r, --append               追加文件至归档结尾  -t, --list                 列出归档内容  -u, --update               仅追加比归档中副本更新的文件  -x, --extract, --get       从归档中解出文件2、操作修饰符:  -g, --listed-incremental=FILE  处理新式的 GNU 格式的增量备份  -G, --incremental              处理老式的 GNU 格式的增量备份3、重写控制:  -k, --keep-old-files       解压时不要替换存在的文件      --keep-newer-files     不要替换比归档中副本更新的已存在的文件  -W, --verify               在写入以后尝试校验归档4、操作文件属性:  -p, --preserve-permissions, --same-permissions 用原来的文件权限还原文件(默认只为root户服务)5、压缩选项:  -a, --auto-compress        使用归档后缀名来决定压缩程序  -j, --bzip2                使用 bzip2 处理归档  -z, --gzip, --gunzip       使用 gzip 处理归档  -Z, --compress, --uncompress   使用 compress 处理归档6、本地文件选择:  -C, --directory=DIR        改变至目录 DIR  -T, --files-from=FILE      从 FILE中获取文件名来解压或创建文件  -X, --exclude-from=FILE    排除 FILE 中列出的模式串7、提示性输出:  -v, --verbose              详细地列出处理的文件  -w, --interactive, --confirmation 每次操作都要求确认zcs0237 2014.07.16More cleaner and more efficient!

本文转自ICT时空dbasdk的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
从程序员到项目经理(16):原来一切问题都是可以解决的【转载】
查看>>
当kfreebsd 用户遇见openSUSE系统
查看>>
Struts2自己定义拦截器实例—登陆权限验证
查看>>
调用webservice查询手机号码归属地信息
查看>>
RESTFul basic introduction
查看>>
NoSQL数据库的分布式模型
查看>>
Win7下同时使用有线和无线时的优先级设置
查看>>
Python文件遍历二种方法
查看>>
GUN 的汇编语法
查看>>
java.lang.VerifyError: Inconsistent stackmap frames at branch target
查看>>
sqlite 判断表中是否包含 某个字段
查看>>
freemarker序列的拆分
查看>>
angularjs基本执行流程
查看>>
线段树 + 区间更新: HDU 4893 Wow! Such Sequence!
查看>>
再探vim经常使用命令
查看>>
[BZOJ 1066][SCOI2007]蜥蜴
查看>>
platform_device与platform_driver
查看>>
sql中update,alter,modify,delete,drop的区别和使用(整理)(转)
查看>>
Enabling Active Directory Authentication for VMWare Server running on Linux《转载》
查看>>
MySql性能优化相关
查看>>