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"