Explorar el Código

Добавлен скрипт для восстановления из бэкапа

Denis V. Dedkov hace 9 meses
padre
commit
7de816c870
Se han modificado 1 ficheros con 63 adiciones y 0 borrados
  1. 63 0
      restore.sh

+ 63 - 0
restore.sh

@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# Скрипт полного зеркального восстановления из бэкапа
+# ВНИМАНИЕ: Этот скрипт перезапишет существующие файлы!
+
+if [ "$#" -ne 3 ]; then
+    echo "Использование: $0 <NAS_IP> <NAS_USER> <NAS_PASSWORD>"
+    echo "ВНИМАНИЕ: Все файлы будут заменены версиями из бэкапа!"
+    exit 1
+fi
+
+NAS_ADDR="$1"
+REMOTE_USER="$2"
+NAS_PASS="$3"
+REMOTE_BASE_DIR="NetBackup/$(hostname)"
+
+# Проверка доступности NAS
+if ! ping -c 1 -W 2 "$NAS_ADDR" &> /dev/null; then
+    echo "Ошибка: NAS ($NAS_ADDR) недоступен" >&2
+    exit 1
+fi
+
+if ! rsync "$NAS_ADDR::" &>/dev/null; then
+    echo "Устройство не является rsync-сервером" >&2
+    exit 1
+fi
+
+# Проверка sshpass
+if ! command -v sshpass &>/dev/null; then
+    echo "Установите 'sshpass' для автоматической передачи пароля (sudo apt install sshpass)"
+    exit 1
+fi
+
+echo "=== Анализ изменений ==="
+sshpass -p "$NAS_PASS" rsync -avun \
+    --no-owner --no-group \
+    "$REMOTE_USER@$NAS_ADDR::$REMOTE_BASE_DIR/" / | grep -v "/$"
+
+# Подтверждение опасной операции
+read -p "ВНИМАНИЕ: Это ЗЕРКАЛЬНОЕ восстановление перезапишет файлы! Продолжить? [y/N] " confirm
+if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
+    echo "Восстановление отменено"
+    exit 0
+fi
+
+echo "=== Начато зеркальное восстановление ==="
+echo "Источник: $REMOTE_USER@$NAS_ADDR::$REMOTE_BASE_DIR"
+echo "Назначение: / (корень файловой системы)"
+
+# Команда зеркального восстановления
+sshpass -p "$NAS_PASS" rsync -avu \
+    --progress \
+    --no-owner --no-group \
+    --omit-dir-times \
+    --exclude=/. \
+    "$REMOTE_USER@$NAS_ADDR::$REMOTE_BASE_DIR/" /
+
+if [ $? -eq 0 ]; then
+    echo "=== Зеркальное восстановление успешно завершено ==="
+else
+    echo "=== Ошибка восстановления! ===" >&2
+    exit 1
+fi