Current File : //proc/self/root/usr/local/jetapps/usr/share/rear/restore/JETBACKUP/default/400_restore_backup.sh |
#
# restore files with JetBackup
#
LogPrint "Starting JetBackup restore script to restore all data into $TARGET_FS_ROOT"
# create rescue dir, used as a flag for rescue also
mkdir -p \
/usr/local/jetapps/etc/jetbackup5/._rescue_data \
$TARGET_FS_ROOT/usr/local/jetapps/etc/jetbackup5/._rescue_data
LOG_FILE="${TMP_DIR}/jetbackup-restore.log"
(
/usr/local/jetapps/usr/bin/jetbackup5/rescue $TARGET_FS_ROOT
echo $? >$TMP_DIR/retval
) >"$LOG_FILE" &
BackupPID=$!
starttime=$SECONDS
#sleep 3 # Give the backup software a good chance to start working
test "$PROGRESS_WAIT_SECONDS" || PROGRESS_WAIT_SECONDS=3
TOTAL_ROW=
# get the total inodes need to be restored
while sleep $PROGRESS_WAIT_SECONDS ; kill -0 $BackupPID 2>/dev/null ; do
TOTAL_ROW=$( cat "$LOG_FILE" | grep -E 'Total of .* should be restored' )
[[ $? -eq 0 ]] && break;
done
TOTAL_INODES=$(echo $TOTAL_ROW | sed 's/^.*(\(.*\) inodes).*$/\1/g')
TOTAL_SIZE=$(echo $TOTAL_ROW | sed 's/^.*Total of \([^(]\+\) (.*$/\1/g')
LogPrint ""
LogPrint "Backup total size $TOTAL_SIZE ($TOTAL_INODES inodes)"
ProgressStart "Preparing restore process..."
OLD_PROGRESS=0
while sleep $PROGRESS_WAIT_SECONDS ; kill -0 $BackupPID 2>/dev/null ; do
LAST_ROW=$(tail -1 "$LOG_FILE")
if [[ "$LAST_ROW" =~ Progress ]]; then
DONE_INODES=$(echo $LAST_ROW | sed 's/^.*Total Done \([0-9]\+\).*$/\1/g')
PROGRESS=$(echo "scale=2;$DONE_INODES/$TOTAL_INODES*100"|bc)
PROGRESS=${PROGRESS%.*}
CELLS_NUMBER=$(( ($PROGRESS/2) + ($PROGRESS % 2 > 0) ))
SPACES_NUMBER=$((50-$CELLS_NUMBER))
[[ $PROGRESS -gt 0 && $(($PROGRESS%2)) -ne 0 ]] && CELLS_NUMBER=$(($CELLS_NUMBER-1))
OUTPUT=""
for ((n=0;n<$CELLS_NUMBER;n++)); do OUTPUT+="="; done
[[ $PROGRESS -gt 0 && $(($PROGRESS%2)) -ne 0 ]] && OUTPUT+="-"
for ((n=0;n<$SPACES_NUMBER;n++)); do OUTPUT+=" "; done
[[ $OLD_PROGRESS -ge $PROGRESS ]] && continue
OLD_PROGRESS=$PROGRESS
ProgressInfo "Restoring [$OUTPUT] "${PROGRESS%.*}"%"
fi
done
wait $BackupPID || LogPrintError "Restore job returned a nonzero exit code $?"
backup_prog_rc="$(cat $TMP_DIR/retval)"
if test "$backup_prog_rc" -gt 0 ; then
LogPrint ""
LogPrint ""
LogPrintError "WARNING !
There was an error ($backup_prog_rc) while restoring the backup.
Please check '$RUNTIME_LOGFILE' for more information. You should also
manually check the restored system to see whether it is complete.
"
is_true "$BACKUP_INTEGRITY_CHECK" && Error "Integrity check failed, restore aborted because BACKUP_INTEGRITY_CHECK is enabled"
return $backup_prog_rc
fi
ProgressInfo "Restoring [==================================================] 100%"
mv $TARGET_FS_ROOT"/usr/local/jetapps/usr/bin/jetbackup5/jetbackupdready" $TARGET_FS_ROOT"/usr/local/jetapps/usr/bin/jetbackup5/jetbackupdready.original";
mv $TARGET_FS_ROOT"/usr/local/jetapps/usr/bin/jetbackup5/jetbackupdready.rescue" $TARGET_FS_ROOT"/usr/local/jetapps/usr/bin/jetbackup5/jetbackupdready";
LogPrint ""
LogPrint ""
LogPrint "JetBackup system files restore completed. Please note that account restore will start after server reboot"