diff options
Diffstat (limited to 'abs/core/LinHES-system/bin')
-rwxr-xr-x | abs/core/LinHES-system/bin/mythbackup | 42 | ||||
-rwxr-xr-x | abs/core/LinHES-system/bin/mythrestore | 45 |
2 files changed, 87 insertions, 0 deletions
diff --git a/abs/core/LinHES-system/bin/mythbackup b/abs/core/LinHES-system/bin/mythbackup index d0d028d..3b4edd4 100755 --- a/abs/core/LinHES-system/bin/mythbackup +++ b/abs/core/LinHES-system/bin/mythbackup @@ -5,8 +5,32 @@ echo 1>&2 "Can not load common settings!" exit 1 } + +. /etc/osd_cat.cfg || { + color=yellow + outline=2 + outlinecolour=black + shadow=0 + shadowcolour=black + font="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*" +} #---------------------------------------------------------------------------- +# Function to display status onscreen +osd() +# Arg_1 = display text Arg_2 = delay time Arg_3 = line num +{ + TEXT=$1 + killall -9 osd_cat + if [ $3 -gt 1 ]; then + for ((i=2; i <= $3 ; i++)) + do + TEXT="\n"$TEXT + done + fi + printf "$TEXT" | osd_cat --lines=6 --pos=middle --align=center --delay=$2 --color=$color --outline=$outline --outlinecolour=$outlinecolour --shadow=$shadow --shadowcolour=$shadowcolour --font=$font & +} + # Prevent mythshutdown from shutting down the system in the middle... lock_myth @@ -14,12 +38,15 @@ lock_myth play_sound init.wav # Keep a chain of recent backups, +export DISPLAY=:0.0 +osd "Rolling over old backups..." 0 1 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." +osd "Checking the database..." 0 2 # 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. @@ -31,10 +58,12 @@ cd $DATABASE_DIR $MYISAMCHK -f *.MYI start_mysqld +osd "Backing up database..." 0 3 # Dumps the $DATABASE database $MYSQLDUMP -v -c -u root $DATABASE > $BACKUP_SQL shrink $BACKUP_SQL +osd "Backing up files..." 0 4 # 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... @@ -49,19 +78,32 @@ shrink $BACKUP_TAR $CHOWN root:root $BACKUP_TAR* $BACKUP_SQL* $CHMOD go-rwx $BACKUP_TAR* $BACKUP_SQL* +osd "Testing backup..." 0 5 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 + osd "Backup completed successfully." 5 6 echo "Backup passes all checks." + COMPLETE_MSG="Last backup completed on `date '+%D @ %-I:%M %p'`" play_sound complete.wav STATUS=0 else + osd "Backup FAILED." 5 6 echo "The backup is bad or already out of date!" + COMPLETE_MSG="Last backup FAILED on `date '+%D @ %-I:%M %p'`" play_sound fail.wav STATUS=1 fi +# Add Last backup status to menu item +if grep "<description>" /usr/share/mythtv/themes/defaultmenu/mythbackup.xml >/dev/null 2>&1 +then + sed -i "s_\<description\>.*\<description\>_description\>$COMPLETE_MSG\<\/description_" /usr/share/mythtv/themes/defaultmenu/mythbackup.xml +else + sed -i.orig " /NONE/ i\ \<description\>$COMPLETE_MSG\<\/description\>" /usr/share/mythtv/themes/defaultmenu/mythbackup.xml +fi + # Now we can restart the backend. start_mythbackend diff --git a/abs/core/LinHES-system/bin/mythrestore b/abs/core/LinHES-system/bin/mythrestore index 7fce371..447b0b8 100755 --- a/abs/core/LinHES-system/bin/mythrestore +++ b/abs/core/LinHES-system/bin/mythrestore @@ -5,8 +5,32 @@ echo 1>&2 "Can not load common settings!" exit 1 } + +. /etc/osd_cat.cfg || { + color=yellow + outline=2 + outlinecolour=black + shadow=0 + shadowcolour=black + font="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*" +} #---------------------------------------------------------------------------- +# Function to display status onscreen +osd() +# Arg_1 = display text Arg_2 = delay time Arg_3 = line num +{ + TEXT=$1 + killall -9 osd_cat + if [ $3 -gt 1 ]; then + for ((i=2; i <= $3 ; i++)) + do + TEXT="\n"$TEXT + done + fi + printf "$TEXT" | osd_cat --lines=6 --pos=middle --align=center --delay=$2 --color=$color --outline=$outline --outlinecolour=$outlinecolour --shadow=$shadow --shadowcolour=$shadowcolour --font=$font & +} + do_file_updates() { # A function because we need to do this in two places echo "Doing any needed file updates..." [ -n "$UPDATE_FILES" -a -f "$UPDATE_FILES" -a -x "$UPDATE_FILES" ] && @@ -39,6 +63,7 @@ lock_myth # Play a sound to let you know I'm starting. play_sound restore.wav +export DISPLAY=:0.0 # Doing this while the backend is active could be BAD. stop_mythbackend @@ -46,6 +71,7 @@ stop_mythbackend # If the standard backup file exists we try to restore the files based # on our restore list. if compression=$(compression_type "$BACKUP_TAR") ; then + osd "Restoring files..." 0 1 echo "Starting the restore of files..." cd / expand -c $BACKUP_TAR$compression | @@ -59,8 +85,11 @@ if compression=$(compression_type "$BACKUP_SQL") ; then echo "Starting the DB restore, this can take a while..." echo "Clearing out the existing skeleton..." #mysql_stdin < $DROP_SQL + osd "Recreating database..." 0 2 echo "Recreating the db..." + sleep 1 $MYSQLADMIN -u root create $DATABASE + osd "Restoring database..." 0 3 echo "Restoring the data (long)..." expand -c $BACKUP_SQL$compression | mysql_stdin echo "Doing any needed db updates..." @@ -69,23 +98,39 @@ if compression=$(compression_type "$BACKUP_SQL") ; then echo "Completed the DB restore." fi +osd "Testing restore..." 0 4 echo "Sanity checking your restore..." play_sound vr.wav # Play a sound to let you know the outcome. if check_files_and_tables $RESTORE_LIST ; then + osd "Restore completed successfully." 5 5 echo "Restore passes all checks." + COMPLETE_MSG="Last restore completed on `date '+%D @ %-I:%M %p'`" play_sound restored.wav STATUS=0 else + osd "Restore FAILED." 5 5 echo "The restore failed or was already modified!" + COMPLETE_MSG="Last restore FAILED on `date '+%D @ %-I:%M %p'`" play_sound rf.wav STATUS=1 fi +# Add Last restore status to menu item +if grep "<description>" /usr/share/mythtv/themes/defaultmenu/mythrestore.xml >/dev/null 2>&1 +then + sed -i "s_\<description\>.*\<description\>_description\>$COMPLETE_MSG\<\/description_" /usr/share/mythtv/themes/defaultmenu/mythrestore.xml +else + sed -i.orig " /NONE/ i\ \<description\>$COMPLETE_MSG\<\/description\>" /usr/share/mythtv/themes/defaultmenu/mythrestore.xml +fi + # Make any updates _after_ we verify the backup... do_db_updates do_file_updates +#post restore fixup for sshd +/usr/MythVantage/bin/systemconfig.py -m user + # Now it's more or less safe to restart the backend. start_mythbackend |