Знакомство, основы, развертывание.
Глава 1: Restic — Знакомство, установка и подготовка
Резервное копирование — это то, о чем вспоминают за секунду до того, как станет слишком поздно. Данное руководство поможет настроить надежную, зашифрованную и полностью автоматическую систему бэкапов на базе утилиты Restic для сервера под управлением Debian Linux.
1. Что такое Restic и почему он хорош?
Restic — это консольная утилита для резервного копирования, написанная на Go. В отличие от старых инструментов вроде tar или rsync, Restic изначально создавался с прицелом на безопасность и скорость в современных реалиях.
Ключевые преимущества:
- Дедупликация "на лету": Restic не просто копирует файлы. Он разбивает их на части и сохраняет только уникальные блоки. Если у тебя на сервере лежит 10 одинаковых конфигурационных файлов или баз данных, физически в бэкап улетит только один экземпляр. Это колоссально экономит место.
- Параноидальная безопасность: Все бэкапы шифруются на стороне сервера криптографией AES-256-CTR. Метаданные (имена файлов, папок, размеры) защищены с помощью HMAC-SHA256. Даже если кто-то украдет твой сетевой диск с бэкапами, без пароля он увидит лишь кашу из случайных байт.
- Инкрементальность: Первый бэкап будет долгим (скопируется всё). Все последующие бэкапы занимают секунды, так как Restic дописывает только изменившиеся кусочки.
- Универсальность: Ему не важно, куда слать данные. Это может быть локальная папка, внешний жесткий диск, сетевая шара Windows (SMB), сервер NFS или облака (S3, Backblaze B2, Google Drive).
2. Установка Restic на Debian
Поскольку сервер под управлением Debian уже запущен и готов к работе, установка займет меньше минуты. Restic находится в официальных репозиториях Debian.
Обнови списки пакетов и установи утилиту:
sudo apt update && sudo apt install restic -y
После установки проверь, что всё встало корректно, запросив версию программы:
restic version
На экране должно появиться что-то вроде: restic 0.16.x compiled with go1.2x.
3. Безопасность: Создание скрытого файла пароля
Restic полностью зашифрован. Чтобы выполнять бэкапы в автоматическом режиме (например, по скрипту), ему нужно передавать пароль от репозитория. Хранить пароль открытым текстом в истории команд или внутри тела скрипта — огромная дыра в безопасности.
Правильный подход — создать отдельный файл пароля в домашней директории пользователя, скрыв его от всех остальных учетных записей в системе.
- Создай пустой файл в домашней директории (например, для пользователя
stan):touch /home/stan/.restic_pw - Открой его через текстовый редактор
nano:nano /home/stan/.restic_pw - Введи туда свой сложный пароль (одной строкой, без лишних пробелов) и сохрани файл (
Ctrl+O, затемEnter, выход —Ctrl+X). - Самый важный шаг! Заблокируй доступ к файлу для всех, кроме себя:
chmod 600 /home/stan/.restic_pwФлаг
600означает: владелец (ты) может читать и писать файл, а все остальные пользователи сервера (и запущенные ими процессы) не смогут его даже открыть.
4. Настройка сетевогольного хранилища (Монтирование Windows-шары)
Хранить бэкапы на том же диске, где крутится система — бессмысленно. Если диск умрет, он заберет с собой и бэкапы. Мы настроим постоянное монтирование сетевой папки, расположенной на компьютере с Windows (SMB/CIFS), так, чтобы она автоматически подключалась при старте сервера Debian.
Шаг 4.1: Установка утилиты монтирования
Для работы с протоколом SMB в Linux нужен специальный драйвер:
sudo apt install cifs-utils -y
Шаг 4.2: Создание папки в Linux
Создай точку монтирования — пустую директорию, в которую "пробросится" сетевой диск Windows:
sudo mkdir -p /mnt/win_backup
Шаг 4.3: Скрытие сетевых учетных данных
Чтобы не писать логин и пароль от учетной записи Windows в системных файлах у всех на виду, создай файл с учетными данными:
sudo nano /etc/win_credentials
Запиши туда логин и пароль от Windows (или от конкретной сетевой папки) в таком формате:
username=ТвойЛогинWindows
password=ТвойПарольWindows
Сохрани файл, закрой его и защити правами доступа:
sudo chmod 600 /etc/win_credentials
Шаг 4.4: Пропись автоматического монтирования в /etc/fstab
Файл /etc/fstab отвечает за диски и шары, которые подключаются при старте системы. Открой его с правами суперпользователя:
sudo nano /etc/fstab
Спустись в самый конец файла и добавь одну строку (замени IP-адрес 192.168.1.100 и имя папки homeserver_backup на свои реальные данные):
//192.168.1.100/homeserver_backup /mnt/win_backup cifs credentials=/etc/win_credentials,uid=1000,gid=1000,iocharset=utf8,x-systemd.automount 0 0
Что значат эти параметры:
uid=1000,gid=1000— делает твоего локального пользователя Linux владельцем смонтированных файлов, чтобы не было проблем с правами.x-systemd.automount— умная опция: если во время загрузки сервера компьютер с Windows будет выключен, Linux не зависнет намертво, а примонтирует папку автоматически в тот момент, когда ты впервые к ней обратишься.
Шаг 4.5: Тест монтирования
Выполни команду для принудительного монтирования всех дисков из fstab:
sudo mount -a
Проверь, что папка доступна:
ls -la /mnt/win_backup
Если команда не выдала ошибок и ты видишь содержимое сетевого диска — победа.
5. Инициализация репозитория Restic
Перед тем как делать бэкапы, Restic должен создать в целевой папке свою структуру и сгенерировать ключи шифрования. Этот процесс называется инициализацией. Он выполняется один раз.
Запусти команду создания репозитория, указав путь к нашей смонтированной сетевой папке и созданный ранее файл пароля:
sudo restic -r /mnt/win_backup/homeserver_backup --password-file /home/stan/.restic_pw init
Если всё сделано правильно, Restic напишет:created restic repository c1a2b3c4... at /mnt/win_backup/homeserver_backup
Поздравляем! Базовая инфраструктура готова. Наш репозиторий инициализирован, надежно зашифрован, а сетевой диск Windows жестко привязан к системе и не слетит после перезагрузки.