how to make tar exclude hidden directories

user788171 picture user788171 · Dec 10, 2013 · Viewed 21.5k times · Source

When I want to exclude directories when taring, I typically use syntax like this:

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

How can I modify this to exclude all hidden directories, for example, in addition to .ssh/, I also want to exclude .vnc/, .wine/, etc.

Answer

joelostblom picture joelostblom · Jan 7, 2015

You can use --exclude=".*"

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

Be careful if you are taring the current directory, since it will also be excluded by this pattern matching.

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

Then you need to use --exclude='.[^/]*' as described elsewhere

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