tar命令(对目录有rx权限,root权限)
创建tar包
# 创建tar包,确保用户有权限访问目标文件[lyk@centos7 ~]$ tar -cf etc.tar /etctar: 从成员名中删除开头的“/”tar: /etc/crypttab:无法 open: 权限不够tar: /etc/logrotate.d/named:无法 open: 权限不够# 没有权限读取的文件,无法打包#创建归档文件[root@server ~ 14:27:48]# tar -cf etc.tar /etctar: 从成员名中删除开头的“/”# 再次打包,如果存在相同的tar包,不会提示是否覆盖[root@centos7 ~]# tar -cf etc.tar /etc#查看归档内容[root@server ~ 14:54:31]# tar -t -f etc.taretc/etc/fstabetc/crypttabetc/mtabetc/resolv.conf......#搜索特定文件,配合grep过滤[root@server ~ 14:55:08]# tar -t -f etc.tar | grep limits.confetc/security/limits.conf#提取特定文件[root@server ~ 14:56:09]# tar -x -f etc.tar etc/security/limits.conf#安装 tree 命令[root@server ~ 14:56:41]# yum install -y tree已加载插件:fastestmirror, langpacksLoading mirror speeds from cached hostfile* base: mirrors.aliyun.com......#查看提取的文件结构[root@server ~ 14:57:03]# tree etcetc└── security└── limits.conf1 directory, 1 file# 提取部分文件[root@centos7 ~]# tar -t -f etc.tar|grep etc/hostetc/host.confetc/hostsetc/hostname[root@centos7 ~]# tar -xf etc.tar $(tar -t -f etc.tar|grep etc/host)[root@centos7 ~]# tree etcetc├── host.conf├── hostname└── hosts0 directories, 3 files
tar包压缩管理
# **三种压缩工具安装**[root@centos7 ~]# yum install gzip bzip2 xz# gzip压缩,时间最快[root@server ~ 15:18:04]# time tar -czf etc.tar.gz /etctar: 从成员名中删除开头的“/”real 0m0.813suser 0m0.741ssys 0m0.069s# bzip2 压缩[root@server ~ 15:23:35]# time tar -cjf etc.tar.bz2 /etctar: 从成员名中删除开头的“/”real 0m1.772suser 0m1.710ssys 0m0.058s# xz 压缩,时间最长[root@server ~ 15:23:02]# time tar -cJf etc.tar.xz /etctar: 从成员名中删除开头的“/”real 0m8.961suser 0m8.517ssys 0m0.404s# 查看压缩的 tar 包不需要指定压缩选项[root@centos7 ~]# tar -tf etc.tar.gz
tar包中追加文件
#创建一个文件[root@client ~ 17:17:41]# touch 321.txt[root@client ~ 17:17:50]# pwd/root#追加放入tar包,!!无法放入etc.tar.gz# -r 选项(追加文件到归档)不能用于压缩的 tar 文件(如 .tar.gz、.tar.bz2、.tar.xz)。压缩后的归档文件是一个整体,无法直接追加内容。#报错[root@client ~ 17:18:02]# tar -r -f etc.tar.gz /root/321.txttar: 无法更新压缩归档文件tar: Error is not recoverable: exiting now#放入[root@client ~ 17:18:37]# tar -r -f etc.tar /root/321.txttar: 从成员名中删除开头的“/”#过滤查看[root@client ~ 17:19:33]# tar -tf etc.tar |grep 321.txtroot/321.txt
删除tar包中文件
#删除[root@client ~ 17:23:07]# tar --delete -f etc.tar root/321.txt #过滤查不到已经删除[root@client ~ 17:23:42]# tar -tf etc.tar |grep 321.txt