#!/bin/bash basedir="/var/backup" prefix="daily" count="25" list="dirs.list" ( mountpoint -q $basedir && umount $basedir fsck -y /dev/data/backup mount ${basedir} echo "Start @ `date`" > ${basedir}/time last=${basedir}/${prefix}.${count} lasttmp=${basedir}/${prefix}.${count}.tmp if [ -d ${lasttmp} ]; then rm -r ${lasttmp} fi if [ -x ${last} ]; then mv ${last} ${lasttmp} fi for n in `seq ${count} -1 1`; do ((m=$n - 1)) src=${basedir}/${prefix}.$m dest=${basedir}/${prefix}.$n mv ${src} ${dest} done if [ -d ${lasttmp} ]; then mv ${lasttmp} ${basedir}/${prefix}.0 else mkdir -p ${basedir}/${prefix}.0 fi for src in `cat ${basedir}/${list}`; do dest=${basedir}/${prefix}.0/${src} yest=${basedir}/${prefix}.1/${src} if [ ! -d ${dest} ]; then mkdir -p ${dest} fi rsync -ax --delete --link-dest=${yest} ${src} ${dest} done touch ${basedir}/${prefix}.0 echo "Begin MySQL @ `date`" >> ${basedir}/time rm -f ${basedir}/${prefix}.0/mysql.sql.xz mysqldump --all-databases --triggers --routines --events | xz > ${basedir}/${prefix}.0/mysql.sql.xz echo "Begin LDAP @ `date`" >> ${basedir}/time rm -f ${basedir}/${prefix}.0/ldap.ldif.xz ldapsearch | xz > ${basedir}/${prefix}.0/ldap.ldif.xz echo "Begin PostgreSQL @ `date`" >> ${basedir}/time rm -f ${basedir}/${prefix}.0/postgresql-gentoobrowse.sql.xz pg_dump -Upostgres gentoobrowse | xz > ${basedir}/${prefix}.0/postgresql-gentoobrowse.sql.xz rm -f ${basedir}/${prefix}.0/postgresql-p2pvr.sql.xz pg_dump -Upostgres p2pvr | xz > ${basedir}/${prefix}.0/postgresql-p2pvr.sql.xz rm -f ${basedir}/${prefix}.0/postgresql-bugzilla.sql.xz pg_dump -Upostgres bugzilla | xz > ${basedir}/${prefix}.0/postgresql-bugzilla.sql.xz echo "Begin hardlink @ `date`" >> ${basedir}/time hardlink -mt ${basedir} echo "End @ `date`" >> ${basedir}/time umount ${basedir} ) | tee /var/log/backup.log