How to reliably(!) exclude files from a list in tar?
This is bothering me for years now, my backup script always takes everything with it, taking forever to finish.
I initially used the --exclude option, but this is rather restrictive, cluttered the script and still had the excluded directories.
Then i discovered -X/--exclude-from but same result here, weird globbing and still fails.
So i hacked a negative list via fd's --ignore-file and tar -T/--files-from together. But tar still includes files and directories not on the fucking files.tmp.
So i'm not sure if it is a bug in Arch's GNU tar or if it's maybe a parameter in the wrong position, tar can be removed there. This is my current code
I don't know what fd does, but at a guess maybe what you're missing is that tar includes all the files in directories you give it? So if you exclude 'foo/bar' but include 'foo' then foo/bar will be in your tar file.
What I do is basically tar cf `ls ~ | grep -v $files_to_exclude` but if you want to exclude something that isn't a top-level directory you'd need to get slightly more fancy.
...more fancy such as using tar -X, which works for me. I'd never actually tried it before. The 'weird globbing' it uses is regular expressions, which are worth learning how to use. Run grep "$expression" $_tmpfile where $expression is a line from your exclude file to see which files it's going to match and exclude.
I use tar with a an external file for exclude and include files on my custom backup script. There is a --wildcards option, which lets you use * (star) to exclude everything from a directory. The command looks like this:
I save it for now, until i work on it again. Possibly the wildcards thing. And that tar includes files of folders given too, from someone else (how to work with that).