041139411160服务咨询:工作日9:00 - 18:00

如何在使用tar打包时排除单个或多个文件

Linux
已知目录/root/data,data目录里的结构如下:
# tree
.
├─ aliyun.txt
├─ awspack.txt
└─ www
     ├─ a.log
     ├─ b.log
     ├─ c.log
     └─ d.log

现在切换到data的上一级目录下,用tar为data目录打包,并排除指定文件。

一.排除单个文件

利用参数“–exclude”排除data目录下的aliyun.txt文件

# tar -zcvf /tmp/data_backup.tar.gz --exclude=data/aliyun.txt data/
data/
data/www/
data/www/c.log
data/www/d.log
data/www/a.log
data/www/b.log
data/awspack.txt

可以看到压缩过程中并未出现aliyun.txt,当然也可以查看压缩包确认:

# tar -tf /tmp/data_backup.tar.gz
data/
data/www/
data/www/c.log
data/www/d.log
data/www/a.log
data/www/b.log
data/awspack.txt

二.排除多个文件

在/root下创建一个文件exclude.list,写入需要排除的文件的相对路径,完成后如下:

# cat exclude.list
data/aliyun.txt
data/www/a.log
data/www/b.log

利用参数“-X”与文件“exclude.list”来实现排除上述三个文件

# tar -zcvf /tmp/data_backup.tar.gz -X exclude.list data/
data/
data/www/
data/www/c.log
data/www/d.log
data/awspack.txt

可以看到压缩过程中并未出现需要排除的那三个文件,同样查看压缩包再次确认:

# tar -tf /tmp/data_backup.tar.gz
data/
data/www/
data/www/c.log
data/www/d.log
data/awspack.txt

其实方法并不难,只是需要特别注意相对路径这个问题,例如本文中在为data目录打包前先切换到其上一级目录,这样在命令中表示data目录下的文件时使用“data/xxx”即可。还有exclude.list这个文件可以自定义路径创建,但在命令中使用“-X”参数后要接上正确的exclude.list路径。

lxfangs