#!/bin/bash #---------------------------------------------------------------------------- . $LinHES_ROOT/bin/backupcommon || { echo 1>&2 "Can not load common settings!" exit 1 } #---------------------------------------------------------------------------- # Play a sound to let you know I'm starting. play_sound init.wav # Prevent mythshutdown from shutting down the system in the middle... /usr/bin/mythshutdown --lock # 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. /etc/init.d/mythtv-backend stop # Stop, check, and fix $DATABASE db to ensure clean copy, then restart it. /etc/init.d/mysql stop cd $DATABASE_DIR /usr/bin/myisamchk -f *.MYI /etc/init.d/mysql stop ; /etc/init.d/mysql start # Dumps the $DATABASE database /usr/bin/mysqldump -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 / /bin/tar cvf $BACKUP_TAR $BACKUP_LIST 2>&1 | /bin/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. /bin/chown root:root $BACKUP_TAR* $BACKUP_SQL* /bin/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. /etc/init.d/mythtv-backend stop ; /etc/init.d/mythtv-backend start # Unlock the system again... /usr/bin/mythshutdown --unlock exit $STATUS