Problem :
I am doing a remote backup. This are my rsnapshot config.
config_version 1.2
snapshot_root /data/sbackup/
cmd_cp /bin/cp
cmd_rm /bin/rm
cmd_rsync /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger /usr/bin/logger
interval alpha 2
interval beta 2
interval gamma 2
interval delta 1
ssh_args -p xxxx
verbose 3
loglevel 4
logfile /var/log/rsnapshot/
exclude_file /data/xxxxx.exclude
rsync_long_args --stats --delete --numeric-ids --relative --delete-excluded
lockfile /var/run/rsnapshot.pid
backup root@xx.xx.xx.xxx:/ xxxxx-server/
I have added this bottom lines in exclude_file
+ /root
+ /backups/mysqldb/latest
+ /etc/automysqlbackup
+ /etc/imscp
+ /etc/postfix
+ /etc/fail2ban
+ /etc/dovecot
+ /etc/apache2
+ /etc/ssh
+ /etc/ssl
+ /etc/php5
+ /etc/cron.d
+ /usr
+ /var/mail
+ /var/www
+ /var/log
- /var/cache
- /boot
- /home
- /opt
- /etc
- /*
But after doing a rsync I am only getting full root
& usr
directory’s. No other mentioned +
path files/sub directories are getting downloaded.
I want +
directories to be includes and -
not to be includes.
What I am doing wrong?.
Solution :
the syntax is difficult, but not impossible once you get the hang of it, the trick is to realize you must list the directories to match one by one relative to the the root of the rsync/rsnapshot working directory:
say you want to include the /var/log directory and nothing else
+ /var # we want the var directory
+ /var/log # we want the var/log directory
- /var/* # we dont want anything else in the var directory
- /* # we don't want anything else at all
Hope you see it, first we have a match on /var, then on /var/log, then on /var/* and then on /*.
This would not work
+ /var/log
- /*
because /var/log will not generate a match, oddly enough….
In your example your first
+ /backups/mysqldb/latest
would never create a match.. for the same reason!
It seems your exclude pattern /*
means that any paths like /etc/something
will
be excluded unless you explicitly include /etc
and then exclude those you don’t want
with /etc/*
.
So add + /etc
and - /etc/*
, and similarly for /var
and /backups
and /backups/mysqldb
.
By the way, I said earlier you needed 2 files, a separate include_file and exclude_file.
You can do this, but in fact if you start each line in the file with an
explicit ‘+ ‘ or ‘- ‘ it overrides the default include or exclude aspect.
So you can put all in one file, provided you prefix the lines as you have done.