Перейти к основному контенту

3. Restore

Глава 3: Восстановление данных — От одного файла до полного реанимирования

Резервная копия имеет ценность только тогда, когда из нее можно быстро и предсказуемо достать данные. Restic предлагает невероятно гибкие инструменты восстановления: вам не нужно распаковывать гигабайтный архив целиком, чтобы вытащить один случайно удаленный конфигурационный файл. В этой главе мы разберем как точечное, так и полное восстановление системы.


1. Работа со снимками (Snapshots)

Каждый раз, когда запускается бэкап, Restic создает так называемый снимок (snapshot). Каждый снимок имеет свой уникальный ID (например, a1b2c3d4) и привязан к конкретному времени.

Чтобы увидеть список всех доступных точек восстановления, выполните команду:

sudo restic -r /mnt/win_backup/homeserver_backup --password-file /home/stan/.restic_pw snapshots

В выводе терминала вы увидите таблицу со всеми вашими бэкапами. Слово latest в командах ниже всегда указывает на самый свежий снимок в этой таблице.


2. Точечное восстановление: Как достать один файл или папку

Частый сценарий: вы хотите поделиться чистым конфигом с другом (предварительно стерев пароли) или случайно сломали настройки одного из сервисов и хотите откатиться назад.

Вариант А: Просмотр содержимого файла прямо в терминале (Dump)

Если вам не нужен сам файл на диске, а хочется просто быстро скопировать его текст из бэкапа, используйте команду dump. Она выведет содержимое файла на экран без физической распаковки:

sudo restic -r /mnt/win_backup/homeserver_backup --password-file /home/stan/.restic_pw dump latest /home/stan/matrix/homeserver.yaml

Вы можете скопировать этот текст мышкой прямо из консоли, затереть секретные токены и переслать кому угодно.

Вариант Б: Извлечение файла на диск в определенную папку (Restore с фильтром)

Если вам нужно физически положить файл или целую папку где-нибудь рядом (например, во временную директорию /tmp), чтобы спокойно изучить или отредактировать, используйте команду restore с флагом --include:

sudo restic -r /mnt/win_backup/homeserver_backup --password-file /home/stan/.restic_pw restore latest --target /tmp --include /home/stan/matrix/homeserver.yaml

Что произойдет: Restic зайдет в последний бэкап, найдет указанный файл и воссоздаст всю структуру папок внутри /tmp. На выходе вы получите файл по адресу:
/tmp/home/stan/matrix/homeserver.yaml


3. Полное восстановление сервера (Катастрофа / Переезд на новый ПК)

Если ваш сервер сгорел, жесткий диск умер или вы просто купили новое железо и хотите развернуть всё заново — это ваш сценарий.

Шаг 3.1: Подготовка новой системы

  1. Установите чистый Debian Linux на новый компьютер/сервер.
  2. Установите Docker, Docker Compose, Nginx и Certbot.
  3. Повторите шаги из Главы 1: установите сам restic и cifs-utils, положите ваш файл пароля .restic_pw и настройте автоматическое монтирование вашей сетевой шары Windows в /etc/fstab.
  4. Убедитесь, что сетевой диск примонтирован и доступен по адресу /mnt/win_backup/homeserver_backup.

Шаг 3.2: Запуск тотального восстановления

Чтобы развернуть все бэкапируемые папки (/home, /etc, /root) обратно на свои места в корень новой системы, укажите в качестве целевой папки (--target) самый корень диска — /:

sudo restic -r /mnt/win_backup/homeserver_backup --password-file /home/stan/.restic_pw restore latest --target /

Что произойдет: Restic возьмет самый свежий снимок и начнет аккуратно раскладывать файлы по их родным местам. Папка /home/stan заполнится вашими проектами, конфигурации Nginx и fstab вернутся в /etc, а скрипты — в /root.

Шаг 3.3: Оживление Docker-контейнеров

После того как Restic завершит работу, ваши контейнеры еще не запущены, но все их файлы уже лежат на диске. Теперь достаточно просто зайти в папки проектов и запустить их. Docker сам увидит конфигурационные файлы, скачает из интернета нужные образы (ведь мы их не бэкапили ради экономии места) и подцепит восстановленные базы данных.

Запустите ваши сервисы:

cd ~/homecloud && sudo docker compose up -d && cd ~/matrix && sudo docker compose up -d && cd ~/firefly-iii && sudo docker compose up -d && cd ~/wiki && sudo docker compose up -d && cd ~/ollama && sudo docker compose up -d

Примечание: Так как веса нейросетей Ollama, Piper и Whisper мы исключили из бэкапа, при первом обращении к ним контейнеры автоматически скачают нужные модели из интернета заново.


4. Полезные команды для обслуживания репозитория

Со временем бэкапов становится слишком много, и они начинают занимать место на сетевом диске. Для наведения порядка используйте следующие команды:

  • Проверка целостности (Профилактика). Раз в пару месяцев проверяйте, что файлы в бэкапе не повреждены физически:
    sudo restic -r /mnt/win_backup/homeserver_backup --password-file /home/stan/.restic_pw check
  • Очистка старых бэкапов (Prune). Команда удаляет старые снимки, оставляя, например, только последние 7 ежедневных, 4 еженедельных и 12 ежемесячных бэкапов, а также физически стирает удаленный мусор с диска:
    sudo restic -r /mnt/win_backup/homeserver_backup --password-file /home/stan/.restic_pw forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune

На этом создание вашей персональной системы резервного копирования завершено. Ваши данные под надежной защитой криптографии и дедупликации Restic!