如果我有文件结构
dir/
dir/.ignore
dir/file.ext
dir/subdir/
dir/subdir/other_file.ext
其中dir/.ignore
包含一行,*.ext
那么我期望命令
$ tar -czvf dir.tgz --exclude-ignore=.ignore dir
导致dir.tgz
包含dir/.ignore
和dir/subdir/other_file.ext
但不包含的dir/file.ext
。
但是使用 GNU tar 版本 1.34(包含在 Ubuntu 22.04 中)运行该命令会得到以下结果:
$ tar -czvf dir.tgz --exclude-ignore=.ignore dir
dir/
dir/subdir/
dir/.ignore
所以dir/subdir/other_file.ext
不包括在内dir.tgz
。
手册页上写道:
--exclude-ignore=FILE Before dumping a directory, see if it contains FILE. If so, read exclusion patterns from this file. The patterns affect only the directory itself.
以及具体的替代方案
--exclude-ignore-recursive=FILE Same as --exclude-ignore, except that patterns from FILE affect both the directory and all its subdirectories.
但排除模式无论如何dir/.ignore
都适用吗dir/subdir
?
显而易见的是:不,也没有意外.ignore
的。dir/subdir/
答案1
可能是个错误,已经遇到。
我发现该
--exclude-ignore
选项并--exclude-vcs-ignores
以.cvsignore
递归方式执行,这与手册相矛盾。
显然尚未修复。
现在还报道在他们的错误跟踪器中