#!/bin/bash #---------------------------------------------------------------------------- . /usr/LH/bin/backupcommon || { echo 1>&2 "Can not load common settings!" exit 1 } #---------------------------------------------------------------------------- # Prevent mythshutdown from shutting down the system in the middle... lock_myth # Play a sound to let you know I'm starting. play_sound init.wav # Keep a chain of recent backups, echo "Starting rollover of old backups, this may take a while..." [ -f "$BACKUP_SQL" ] && shrink $BACKUP_SQL [ -f "$BACKUP_TAR" ] && shrink $BACKUP_TAR backup_roller .19 .18 .17 .16 .15 .14 .13 .12 .11 .10 .9 .8 .7 .6 .5 .4 .3 .2 .1 '' echo "Rollover completed." # Start with the database backup, first we make sure it's healthy, and # then we can dump it. # Doing this while the backend is active would be BAD. stop_mythbackend # Stop, check, and fix $DATABASE db to ensure clean copy, then restart it. stop_mysqld cd $DATABASE_DIR $MYISAMCHK -f *.MYI start_mysqld # Dumps the $DATABASE database $MYSQLDUMP -v -c -u root $DATABASE > $BACKUP_SQL shrink $BACKUP_SQL # Now to backup the other files, no fooling around, grab everything in the # list because you never know what you'll want, and we can always get clever # about what to restore later... # gather all the things in the list into a nice tidy bundle cd / $TAR cvf $BACKUP_TAR $BACKUP_LIST 2>&1 | $SED -e '/Error exit delayed from previous errors/d' shrink $BACKUP_TAR # If you can't read this you've got no business restoring from it anyway. $CHOWN root:root $BACKUP_TAR* $BACKUP_SQL* $CHMOD go-rwx $BACKUP_TAR* $BACKUP_SQL* echo "Sanity checking your backup..." play_sound testing.wav # Play a sound to let you know the outcome. if check_files_and_tables $BACKUP_LIST ; then echo "Backup passes all checks." play_sound complete.wav STATUS=0 else echo "The backup is bad or already out of date!" play_sound fail.wav STATUS=1 fi # Now we can restart the backend. start_mythbackend # Unlock the system again... unlock_myth exit $STATUS