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.
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