如何使 tar 排除隐藏目录

Posted

技术标签:

【中文标题】如何使 tar 排除隐藏目录【英文标题】:how to make tar exclude hidden directories 【发布时间】:2013-12-27 13:53:27 【问题描述】:

当我想在去皮时排除目录时,我通常使用如下语法:

tar -zcf /backup/backup.tar.gz --exclude="/home/someuser/.ssh" /home/someuser

如何修改这个排除所有隐藏目录,比如除了.ssh/,我还想排除.vnc/、.wine/等。

【问题讨论】:

【参考方案1】:

你可以使用--exclude=".*"

$ tar -czvf test.tgz test/
test/
test/seen
test/.hidden
$ tar --exclude=".*" -czvf test.tgz test/
test/
test/seen

如果要对当前目录进行去皮,请小心,因为此模式匹配也会将其排除在外。

$ cd test
$ tar --exclude=".*" -czvf test.tgz ./
$ tar -czvf test.tgz ./
./
./seen
./.hidden

那么你需要按照elsewhere的描述使用--exclude='.[^/]*'

$ tar --exclude='.[^/]*' -czvf test.tgz ./
./
./seen

【讨论】:

或者只使用--exclude=".+",并将路径设置为“.” 看来--exculde=".*"现在是定位的,需要先走,否则无效:tar --exclude=".*" -czvf test.tgz directory_to_be_archived

以上是关于如何使 tar 排除隐藏目录的主要内容,如果未能解决你的问题,请参考以下文章

Tar 排除隐藏文件但使用相对路径?

如何在 CentOS 6.4 上使用 tar 排除目录和/或子目录

AIX下tar排除目录

linux文件夹内文件复制,如何排除某个文件

PHP PharData:从目录构建 .tar 存档,带有排除项

Linux tar压缩命令 排除某个目录 (根据man tar 总结)