操作系统信息:
[root@nfs01 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@nfs01 ~]# uname -r 2.6.32-696.el6.x86_64 [root@nfs01 ~]# uname -m x86_64
参数:
--exclude 打包时排除不需要处理的文件或目录
说明:
tar -zcf a.tar.gz 打包的目录 --exclude=指定排除的文件所在的路径
1)打包的目录使用相对路径,排除的文件只能接相对路径
2)打包的目录使用绝对路径,排除的文件接相对路径或绝对路径
3)建议打包的目录和排除的文件使用的使用路径时,保持一致,都是用绝对路径,或都是用相对路径
测试环境准备
[root@nfs01 doc]# pwd /root/doc [root@nfs01 doc]# tree . └── data ├── a.txt ├── doc │ └── b.txt └── scripts └── c.txt 3 directories, 3 files
测试排除c.txt文件
1)打包的目录为绝对路径,--exclude后绝对路径
[root@nfs01 doc]# tar -zcf /tmp/a.tar.gz /root/doc/* --exclude=/root/doc/data/scripts/c.txt tar: Removing leading `/' from member names [root@nfs01 doc]# tar -tf /tmp/a.tar.gz | grep c.txt [root@nfs01 doc]#
根据结果,可知已排除c.txt文件
2)打包的目录为绝对路径,--exclude后相对路径
[root@nfs01 doc]# tar -zcf /tmp/b.tar.gz /root/doc/* --exclude=data/scripts/c.txt tar: Removing leading `/' from member names [root@nfs01 doc]# tar -tf /tmp/b.tar.gz | grep c.txt
根据结果,可知已排除c.txt文件
[root@nfs01 doc]# tar -zcf /tmp/c.tar.gz /root/doc/* --exclude=c.txt tar: Removing leading `/' from member names [root@nfs01 doc]# tar -tf /tmp/c.tar.gz | grep c.txt
根据结果,可知已排除c.txt文件
3)打包的目录为相对路径,--exclude后绝对路径
[root@nfs01 doc]# tar -zcf /tmp/d.tar.gz ./* --exclude=/root/doc/data/scripts/c.txt [root@nfs01 doc]# tar -tf /tmp/d.tar.gz | grep c.txt ./data/scripts/c.txt
发现结果中并未排除c.txt文件
4)打包的目录为相对路径,--exclude后相对路径
[root@nfs01 doc]# tar -zcf /tmp/e.tar.gz ./* --exclude=c.txt [root@nfs01 doc]# tar -tf /tmp/e.tar.gz | grep c.txt
根据结果,可知已排除c.txt文件
总结:
tar -zcf a.tar.gz 打包的目录 --exclude=指定排除的文件所在的路径
1)打包的目录使用相对路径,排除的文件只能接相对路径
2)打包的目录使用绝对路径,排除的文件接相对路径或绝对路径
3)建议打包的目录和排除的文件使用的使用路径时,保持一致,都是用绝对路径,或都是用相对路径