diff options
Diffstat (limited to 'abs/core-testing/LinHES-system/bin/mythbackup')
-rwxr-xr-x | abs/core-testing/LinHES-system/bin/mythbackup | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/abs/core-testing/LinHES-system/bin/mythbackup b/abs/core-testing/LinHES-system/bin/mythbackup new file mode 100755 index 0000000..dfba611 --- /dev/null +++ b/abs/core-testing/LinHES-system/bin/mythbackup @@ -0,0 +1,71 @@ +#!/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 |