以与.gitignore
类似的方式,是否可以执行子目录中的.tarignore
文件,使其在执行时从存档中排除
tar cfjvh backup.tar.bz2 .
(我知道--exclude
的{{1}}参数,但这不是我想要的。
答案 0 :(得分:1)
您可以执行类似
的操作$ COPYFILE_DISABLE=true tar -c --exclude-from=.tarignore -vzf archiveName.tar.gz
细分: -
COPYFILE_DISABLE=true
的原因是确保以._
开头的文件未包含在.tar
文件中。如果您经常执行export COPYFILE_DISABLE=true
操作,请在Mac上将~/.bash_profile
永久添加到tar
。–exclude-from=.tarignore:
忽略.tarignore
您可以在.tarignore
中找到以下内容,此处为我的
$ cat .tarignore
.DS_Store
.git
.gitignore
答案 1 :(得分:1)
使用--exclude-ignore=.tarignore
选项会导致Tar以与git使用.tarignore
文件类似的方式使用.gitignore
个文件。使用与.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=
选项,这些选项的行为略有不同。