In a similar way to .gitignore
, is it possible to do that a .tarignore
file in a subdirectory makes it excluded from archive when doing
tar cfjvh backup.tar.bz2 .
(I know the --exclude
parameter of tar
but here it's not what I want).
Using the --exclude-ignore=.tarignore
option causes Tar to use .tarignore
files in a similar way that git uses .gitignore
files. Use the same syntax as you would usually use in .gitignore
files, so if you want to ignore all sub-directories and files in a particular directory, add a .gitignore
file with *
to that directory. For example:
$ 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
If you want to ignore all directories that have an empty .tarignore
file, take a look at the --exclude-tag-all=.tarignore
option.
$ 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
Also take a look at the --exclude-tag=
and --exclude-tag=
options, which are variations which have slightly different behaviors.