tar命令中--exclude参数详解

tar命令中–exclude参数详解

测试环境:
[root@osker /]# uname -r
3.10.0-957.el7.x86_64
[root@osker /]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@osker /]# tree test
test
├── t1
│ ├── file1.txt
│ ├── file2.txt
│ └── file3.txt
├── t2
│ ├── file1.txt
│ ├── file2.txt
│ └── file3.txt
└── t3
├── file1.txt
├── file2.txt
└── file3.txt
3 directories, 9 files

打包/test目录下的文件,排除所有文件名为file1.txt的文件
1、–exclude后跟”=“,排除正常。
[root@osker /]# tar -czvf ces.tar.gz /test --exclude=file1.txt
tar: Removing leading /' from member names /test/ /test/t1/ /test/t1/file2.txt /test/t1/file3.txt /test/t2/ /test/t2/file2.txt /test/t2/file3.txt /test/t3/ /test/t3/file2.txt /test/t3/file3.txt 2、--exclude后跟空格,排除正常。 [root@osker /]# tar -czvf ces.tar.gz /test --exclude file1.txt tar: Removing leading/’ from member names
/test/
/test/t1/
/test/t1/file2.txt
/test/t1/file3.txt
/test/t2/
/test/t2/file2.txt
/test/t2/file3.txt
/test/t3/
/test/t3/file2.txt
/test/t3/file3.txt

打包/test目录下的文件,排除/test/t1/file1.txt的文件
1、–exclude后跟”=“,排除正常。
[root@osker /]# tar -czvf ces.tar.gz /test --exclude=/test/t1/file1.txt
tar: Removing leading /' from member names /test/ /test/t1/ /test/t1/file2.txt /test/t1/file3.txt /test/t2/ /test/t2/file1.txt /test/t2/file2.txt /test/t2/file3.txt /test/t3/ /test/t3/file1.txt /test/t3/file2.txt /test/t3/file3.txt 2、--exclude后跟空格,排除正常。 [root@osker /]# tar -czvf ces.tar.gz /test --exclude /test/t1/file1.txt tar: Removing leading/’ from member names
/test/
/test/t1/
/test/t1/file2.txt
/test/t1/file3.txt
/test/t2/
/test/t2/file1.txt
/test/t2/file2.txt
/test/t2/file3.txt
/test/t3/
/test/t3/file1.txt
/test/t3/file2.txt
/test/t3/file3.txt
3、打包目录为绝对路径,排除文件为相对路径时候,排除文件成功。
[root@osker /]# tar -czvf ces.tar.gz /test --exclude test/t1/file1.txt
tar: Removing leading `/’ from member names
/test/
/test/t1/
/test/t1/file2.txt
/test/t1/file3.txt
/test/t2/
/test/t2/file1.txt
/test/t2/file2.txt
/test/t2/file3.txt
/test/t3/
/test/t3/file1.txt
/test/t3/file2.txt
/test/t3/file3.txt
4、打包目录为相对路径,排除文件为绝对路径时候,排除文件失败。
[root@osker /]# tar -czvf ces.tar.gz test --exclude /test/t1/file1.txt
test/
test/t1/
test/t1/file1.txt
test/t1/file2.txt
test/t1/file3.txt
test/t2/
test/t2/file1.txt
test/t2/file2.txt
test/t2/file3.txt
test/t3/
test/t3/file1.txt
test/t3/file2.txt
test/t3/file3.txt
5、打包目录和排除文件为相对路径的时候,排除文件正常。
[root@osker /]# tar -czvf ces.tar.gz test --exclude test/t1/file1.txt
test/
test/t1/
test/t1/file2.txt
test/t1/file3.txt
test/t2/
test/t2/file1.txt
test/t2/file2.txt
test/t2/file3.txt
test/t3/
test/t3/file1.txt
test/t3/file2.txt
test/t3/file3.txt

使用–exclude-from排除文件方法,将要排除的文件路径写入到一个文件中。适合有多个文件需要排除的情况
[root@osker /]# echo “/test/t2/file2.txt” > /exclude.txt
1、打包目录和排除文件以及排除文件里的路径为绝对路径的时候,排除文件正常。
[root@osker /]# tar -czvf ces.tar.gz /test --exclude-from /exclude.txt
tar: Removing leading /' from member names /test/ /test/t1/ /test/t1/file1.txt /test/t1/file2.txt /test/t1/file3.txt /test/t2/ /test/t2/file1.txt /test/t2/file3.txt /test/t3/ /test/t3/file1.txt /test/t3/file2.txt /test/t3/file3.txt 2、打包目录为绝对路径,排除文件为相对路径,排除文件内容为绝对路径的时候,排除文件正常。 [root@osker /]# tar -czvf ces.tar.gz /test --exclude-from exclude.txt tar: Removing leading/’ from member names
/test/
/test/t1/
/test/t1/file1.txt
/test/t1/file2.txt
/test/t1/file3.txt
/test/t2/
/test/t2/file1.txt
/test/t2/file3.txt
/test/t3/
/test/t3/file1.txt
/test/t3/file2.txt
/test/t3/file3.txt
3、打包目录为相对路径,排除文件和排除文件内容为绝对路径的时候,排除文件失败。
[root@osker /]# tar -czvf ces.tar.gz test --exclude-from /exclude.txt
test/
test/t1/
test/t1/file1.txt
test/t1/file2.txt
test/t1/file3.txt
test/t2/
test/t2/file1.txt
test/t2/file2.txt
test/t2/file3.txt
test/t3/
test/t3/file1.txt
test/t3/file2.txt
test/t3/file3.txt
4、打包目录和排除文件为相对路径,排除文件内容为绝对路径的时候,排除文件失败。
[root@osker /]# tar -czvf ces.tar.gz test --exclude-from exclude.txt
test/
test/t1/
test/t1/file1.txt
test/t1/file2.txt
test/t1/file3.txt
test/t2/
test/t2/file1.txt
test/t2/file2.txt
test/t2/file3.txt
test/t3/
test/t3/file1.txt
test/t3/file2.txt
test/t3/file3.txt
5、排除文件内容为相对路径的时候,打包目录和排除文件为相对路径或者绝对路径,排除文件成功。
[root@osker /]# echo “test/t2/file2.txt” > exclude.txt
[root@osker /]# tar -czvf ces.tar.gz test --exclude-from exclude.txt
test/
test/t1/
test/t1/file1.txt
test/t1/file2.txt
test/t1/file3.txt
test/t2/
test/t2/file1.txt
test/t2/file3.txt
test/t3/
test/t3/file1.txt
test/t3/file2.txt
test/t3/file3.txt
[root@osker /]# tar -czvf ces.tar.gz test --exclude-from /exclude.txt
test/
test/t1/
test/t1/file1.txt
test/t1/file2.txt
test/t1/file3.txt
test/t2/
test/t2/file1.txt
test/t2/file3.txt
test/t3/
test/t3/file1.txt
test/t3/file2.txt
test/t3/file3.txt
[root@osker /]# tar -czvf ces.tar.gz /test --exclude-from /exclude.txt
tar: Removing leading /' from member names /test/ /test/t1/ /test/t1/file1.txt /test/t1/file2.txt /test/t1/file3.txt /test/t2/ /test/t2/file1.txt /test/t2/file3.txt /test/t3/ /test/t3/file1.txt /test/t3/file2.txt /test/t3/file3.txt [root@osker /]# tar -czvf ces.tar.gz /test --exclude-from exclude.txt tar: Removing leading/’ from member names
/test/
/test/t1/
/test/t1/file1.txt
/test/t1/file2.txt
/test/t1/file3.txt
/test/t2/
/test/t2/file1.txt
/test/t2/file3.txt
/test/t3/
/test/t3/file1.txt
/test/t3/file2.txt
/test/t3/file3.txt

排除目录
排除目录后不接“/”,排除目录成功。
[root@osker /]# tar -czvf ces.tar.gz /test --exclude=/test/t1
tar: Removing leading /' from member names /test/ /test/t2/ /test/t2/file1.txt /test/t2/file2.txt /test/t2/file3.txt /test/t3/ /test/t3/file1.txt /test/t3/file2.txt /test/t3/file3.txt 排除目录后接“/”,排除目录失败。 [root@osker /]# tar -czvf ces.tar.gz /test --exclude=/test/t1/ tar: Removing leading/’ from member names
/test/
/test/t1/
/test/t1/file1.txt
/test/t1/file2.txt
/test/t1/file3.txt
/test/t2/
/test/t2/file1.txt
/test/t2/file2.txt
/test/t2/file3.txt
/test/t3/
/test/t3/file1.txt
/test/t3/file2.txt
/test/t3/file3.txt

总结:
1、tar命令下的–exclude后面可以跟”=“或者空格,效果一样。
2、tar命令下的–exclude后面跟文件名,会排除所有和此名相同的文件。
3、tar命令下的–exclude后面跟排除文件的路径为绝对路径的时候,打包路径也必须为绝对路径。
4、tar命令下的–exclude后面跟排除文件的路径为相对路径的时候,打包路径为相对或者绝对路径都可以。
5、tar命令下的–exclude-from后面排除文件里的路径为绝对路径的时候,打包路径也必须为绝对路径。
6、tar命令下的–exclude-from后面排除文件里的路径为相对路径的时候,打包路径为相对或者绝对路径都可以。
7、排除目录时候,排除的目录后面不能接“/”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值