Julian Matz
asked on
Automated Backups in Linux (Duplicity)
Hi!
I'm using Duplicity ( http://duplicity.nongnu.org/ ) to automatically backup my files.
The following command will backup all of my users' website files and preferences (e.g. Spamassassin prefs) to a separate drive:
duplicity -v8 /var/www file:///backup/duplicity/v ar/www
What I need is to exclude all the temporary files. Temporary files are all inside a directory called "phptmp" and there is one of these directories per user, e.g.
/var/www/web1/phptmp/
/var/www/web2/phptmp/
/var/www/web3/phptmp/
/var/www/web4/phptmp/
My question is: what is the syntax I need to exclude all these temp folders?
I'm using Duplicity ( http://duplicity.nongnu.org/ ) to automatically backup my files.
The following command will backup all of my users' website files and preferences (e.g. Spamassassin prefs) to a separate drive:
duplicity -v8 /var/www file:///backup/duplicity/v
What I need is to exclude all the temporary files. Temporary files are all inside a directory called "phptmp" and there is one of these directories per user, e.g.
/var/www/web1/phptmp/
/var/www/web2/phptmp/
/var/www/web3/phptmp/
/var/www/web4/phptmp/
My question is: what is the syntax I need to exclude all these temp folders?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
well, you have to use absolute paths so --exclude /var/www/web*/phptmp is a correct approach, in my opinion. Wildcards may be used also to specify depth of exclusion: --exclude /var/www/** <-- this will exclude everything in two level deep recursive search; *** will exclude in three levels deep and so on.
You finally may use such things like --exclude ignorecase:/usr/[a-z0-9]f oo/*/**.py to take advantage of full reg exp matching power. Here we told him to exclude case insensitively any folder in /usr/*foo/*/**.py. Note how we told it to match any alphanumeric chars in foo via [a-z0-9].
But if you just need to exclude specific dirs I belive that specifying a filelist would be the most easy and effective way
You finally may use such things like --exclude ignorecase:/usr/[a-z0-9]f
But if you just need to exclude specific dirs I belive that specifying a filelist would be the most easy and effective way
ASKER
Thanks. Being as these temp directories might change (if users are added or deleted), I wouldn't be able to use a static filelist.
Can I use standard regular expressions?
Would this work for me?
duplicity -v8 /var/www --exclude /var/www/web[0-9]+/phptmp file:///backup/duplicity/v ar/www
Can I use standard regular expressions?
Would this work for me?
duplicity -v8 /var/www --exclude /var/www/web[0-9]+/phptmp file:///backup/duplicity/v
Mhh. Actually does exist the regex support, but in a separate rsync patch under development...
With the options we have now, In a scenario where only the folder "webN" changes, try
--exclude /var/www/*/phptmp/ <---include always the slash, if it's not a file
This will exclude any folder called phptmp/ two levels below a base directory called /var/www/
We have to use this because pattern expansion with + doesn't match. Only * can match any numer of charachters.
Is this ok?
With the options we have now, In a scenario where only the folder "webN" changes, try
--exclude /var/www/*/phptmp/ <---include always the slash, if it's not a file
This will exclude any folder called phptmp/ two levels below a base directory called /var/www/
We have to use this because pattern expansion with + doesn't match. Only * can match any numer of charachters.
Is this ok?
ASKER
Thanks! I'm giving this a try now and will let you know how I get on.
ASKER
This is where the wildcard would need to be placed (*):
--exclude /var/www/web*/phptmp
Or would it have to be? :
--exclude /web*/phptmp
I didn't know that you need to take the destination path when using --exclude ...