[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
[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文件
[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文件
[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文件
[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)建议打包的目录和排除的文件使用的使用路径时,保持一致,都是用绝对路径,或都是用相对路径