【发布时间】:2017-01-23 16:20:09
【问题描述】:
以类似于.gitignore 的方式,是否可以在子目录中将.tarignore 文件从存档中排除
tar cfjvh backup.tar.bz2 .
(我知道tar 的--exclude 参数,但这不是我想要的)。
【问题讨论】:
标签: linux archive tar gitignore ignore
以类似于.gitignore 的方式,是否可以在子目录中将.tarignore 文件从存档中排除
tar cfjvh backup.tar.bz2 .
(我知道tar 的--exclude 参数,但这不是我想要的)。
【问题讨论】:
标签: linux archive tar gitignore ignore
使用--exclude-ignore=.tarignore 选项会导致Tar 以与git 使用.gitignore 文件类似的方式使用.tarignore 文件。使用与.gitignore 文件中通常使用的语法相同的语法,因此,如果您想忽略特定目录中的所有子目录和文件,请将带有* 的.gitignore 文件添加到该目录。例如:
$ find dir
dir
dir/a
dir/b
dir/c
dir/dir1
dir/dir1/1a
dir/dir1/1b
dir/dir2
dir/dir2/2a
dir/dir2/2b
$ echo "*" > dir/dir1/.tarignore
$ tar -c --exclude-ignore=.tarignore -vjf archive.tar.bz2 dir
dir/
dir/a
dir/b
dir/c
dir/dir1/
dir/dir2/
dir/dir2/2a
dir/dir2/2b
如果您想忽略所有包含空 .tarignore 文件的目录,请查看 --exclude-tag-all=.tarignore 选项。
$ find dir
dir
dir/a
dir/b
dir/c
dir/dir1
dir/dir1/1a
dir/dir1/1b
dir/dir2
dir/dir2/2a
dir/dir2/2b
$ touch dir/dir1/.tarignore
$ tar -c --exclude-tag-all=.tarignore -vjf archive.tar.bz2 dir
tar: dir/dir1/: contains a cache directory tag .tarignore; directory not dumped
dir/
dir/a
dir/b
dir/c
dir/dir2/
dir/dir2/2a
dir/dir2/2b
还可以查看 --exclude-tag= 和 --exclude-tag= 选项,它们是行为略有不同的变体。
【讨论】:
你可以这样做
$ COPYFILE_DISABLE=true tar -c --exclude-from=.tarignore -vzf archiveName.tar.gz
细分:-
COPYFILE_DISABLE=true 的原因是确保以._ 开头的文件不包含在创建的.tar 文件中。如果您经常进行tar 操作,请启用它在您的 Mac 上将export COPYFILE_DISABLE=true 永久添加到~/.bash_profile。–exclude-from=.tarignore: 忽略.tarignore 中列出的所有文件和文件夹
你的.tarignore可以有以下内容,这里是我的
$ cat .tarignore
.DS_Store
.git
.gitignore
【讨论】:
.tarignore 文件。你明白我的意思吗?每个文件夹中可能会有 10 或 20 个这样的 .tarignore 文件,这些文件应该被忽略。