#!/bin/bash # br, sept 2007 - Dec 2010 SOURCEDIR=/mnt/my-mountpoint # full path SERVER=local # could also be user@hostname, or "local" if local ma$ DESTDIR=/mnt/backup1/damia-mountpoint # full path, or relative to home dir$ NYEARS=3 NMONTHS=12 NWEEKS=4 NDAYS=7 # filter: can be used in every directory within the "source" dir. FILTER=--filter='dir-merge .filter-rule' # other rsync options RSYNCOPTS="" # functions run just before and after the rsync. Could be useful to create # database dumps, etc... function beforesync() { # next line may be removed if you do something. bash does not like empty # functions log -s -t "calling user beforesync: mysql databases dumps..." datadir=$(mysql -sN -u root -p'@Fa1952%' -e 'select @@datadir') # log "mysql datadir=${datadir}" rm -f "{datadir}/${FILTERNAME}" databases=($(mysql -sN -u root -p'@Fa1952%' -e "SHOW DATABASES;")) for db in "${databases[@]}" do # do not backup database contents itself echo "- /${db}/*" >> "${datadir}/${FILTERNAME}" log -n "${db}... " case "$db" in information_schema|performance_schema) log "skipped." ;; *) log -n "dumping to ${datadir}${db}.sql... " mysqldump --user=root --routines "$db" > "$datadir/$db.sql" log -n "compressing... " gzip -f "${datadir}/${db}.sql" log "done." esac done # log "filtername contains:" # cat ${datadir}/${FILTERNAME} } function aftersync() { # we may remove the dump here... log -s -t "calling user aftersync" }