57 lines
1.7 KiB
Bash
57 lines
1.7 KiB
Bash
#!/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"
|
|
}
|