Restic + Rclone: розумні, зашифровані та інкрементні бекапи VPS у хмару
Раніше ми вже розбирали, як налаштувати бекап VPS на Google Drive через rclone. Але звичайне копіювання файлів («зліпок» папки на поточний момент) має суттєві недоліки: воно не захищає від перезапису пошкоджених файлів, не шифрує дані на стороні хмари та витрачає забагато трафіку і місця при повторному копіюванні.
Для вирішення цих проблем існує Restic — сучасна, швидка та безпечна утиліта для створення бекапів. А в поєднанні з Rclone вона дозволяє зберігати зашифровані версійні копії на будь-якому хмарному сховищі (Google Drive, Backblaze B2, WebDAV тощо).
Чому саме Restic?
- 🔐 Шифрування за замовчуванням: Усі дані шифруються на вашому сервері до відправки у хмару. Навіть якщо зловмисники отримають доступ до вашого хмарного диску, вони побачать лише купу зашифрованих блоків.
- 📦 Дедуплікація: Restic розбиває файли на частини і зберігає лише унікальні блоки. Якщо файл не змінювався, він не завантажується вдруге. Якщо файл змінився частково — завантажиться лише змінена частина.
- 🕒 Інкрементні бекапи та знімки (Snapshots): Кожен бекап створює «знімок» системи на конкретний час. Ви можете легко «відкотити» стан папки на тиждень чи місяць тому.
- 🔌 Сумісність з Rclone: Restic вміє використовувати Rclone як транспортний рівень.
Крок 1. Встановлення Restic
На AlmaLinux 9 утиліта доступна в стандартних репозиторіях:
1
dnf install -y restic
Перевіряємо успішність встановлення:
1
2
restic version
# restic 0.16.0 compiled with go1.20.3
Крок 2. Підготовка сховища в Rclone
Припустимо, що у вас уже налаштований пульт (remote) в Rclone з іменем gdrive (якщо ні — див. попередню статтю про Rclone).
Створимо папку на Google Drive, де зберігатиметься наш репозиторій бекапів:
1
rclone mkdir gdrive:restic-backup
Крок 3. Ініціалізація репозиторію Restic
Для роботи Restic потрібен пароль шифрування. Втрата цього пароля означає повну втрату доступу до бекапів, тому збережіть його в надійному менеджері паролів.
Оголошуємо пароль у змінних оточення та ініціалізуємо репозиторій через міст rclone:
1
2
export RESTIC_PASSWORD="вашПарольШифрування"
restic -r rclone:gdrive:restic-backup init
Якщо все налаштовано правильно, Restic створить структуру папок у вашому хмарному сховищі.
Крок 4. Створення першого бекапу
Давайте заархівуємо робочу папку вашого сайту, наприклад /home/sedunlab.com:
1
2
export RESTIC_PASSWORD="вашПарольШифрування"
restic -r rclone:gdrive:restic-backup backup /home/sedunlab.com
Під час першого запуску Restic просканує всі файли та завантажить їх. Наступні запуски цієї ж команди займуть лічені секунди, оскільки передаватимуться лише нові або змінені фрагменти файлів.
Крок 5. Керування знімками (Snapshots)
Кожен успішний бекап створює унікальний Snapshot. Переглянути список усіх збережених копій:
1
restic -r rclone:gdrive:restic-backup snapshots
Ви побачите таблицю з ID знімків, часом створення та шляхами.
Відновлення даних
Для відновлення файлів зі знімка використовуйте команду restore:
1
2
3
4
5
# Відновити останню копію у папку /tmp/restore-dir
restic -r rclone:gdrive:restic-backup restore latest --target /tmp/restore-dir
# Або відновити конкретний знімок за його ID
restic -r rclone:gdrive:restic-backup restore 1a2b3c4d --target /tmp/restore-dir
Крок 6. Автоматизація та очищення старих бекапів
Щоб бекапи робилися автоматично і не забивали хмару старими копіями, напишемо Bash-скрипт /root/backup.sh:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cat > /root/backup.sh << 'EOF'
#!/bin/bash
# Змінні оточення для Restic
export RESTIC_PASSWORD="вашПарольШифрування"
export RESTIC_REPOSITORY="rclone:gdrive:restic-backup"
# 1. Запуск бекапу
restic backup /home/sedunlab.com
# 2. Очищення старих бекапів за правилом:
# Зберігати останні 7 щоденних, 4 щотижневих та 12 щомісячних бекапів.
# Опція --prune видаляє фізичні зашифровані блоки, які більше не потрібні.
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
EOF
chmod +x /root/backup.sh
Додаємо в Cron (щоночі о 3:00)
1
crontab -e
Вставляємо рядок:
1
0 3 * * * /bin/bash /root/backup.sh > /dev/null 2>&1
Підсумок
Ми отримали надійну, шифровану систему резервного копіювання, яка працює у фоновому режимі та економить дисковий простір завдяки дедуплікації. Навіть якщо ваш VPS повністю «помре», ви зможете розгорнути всі дані на новому сервері за кілька хвилин, знаючи лише пароль від репозиторію Restic та підключивши Rclone.
