Бэкап без паники: простые правила, которые спасут ваш Linux

Введение

В мире Unix‑подобных систем надежность и предсказуемость — это не просто слова. Хакеры, сбои оборудования и человеческие ошибки делают резервное копирование одной из самых важных задач администрирования. Однако многие считают её сложной, дорогой или даже бессмысленной. В этой статье мы разберём простой набор правил, которые позволят вам создавать надёжные бэкапы без лишней паники.

⚠️ Важно: резервное копирование — это не «плюс‑или‑минус» в настройках, а обязательная часть стратегии выживания вашего сервера. Если вы читаете эту статью до того, как потеряете данные, значит, вам всё ещё удаётся держать ситуацию под контролем.


Основная часть

1️⃣ Выберите правильный инструмент

Не каждый бэкап‑скрипт одинаково удобен. Рассмотрим три популярных утилиты и когда их использовать.

Утилита Плюсы Минусы Лучшее применение
rsync Быстрый, delta‑копирование Нет встроенного шифрования Локальные резервные копии / синхронизация каталогов
tar Универсальный формат, легко переносить Не поддерживает инкремент в нативном виде Создание архивов для офлайн-репозитория
duplicity Инкремент + шифрование Требует Python, может быть медленным Полноценные резервные копии с удалённым хранением
# Пример простого rsync‑бэкапа
rsync -avz --delete /var/www/ backup@example.com:/mnt/backups/

🔧 Tip: Используйте --backup-dir для создания “снимков” старых файлов, чтобы быстро откатиться в случае ошибки.


2️⃣ Делайте инкрементные бэкапы

Инкрементный режим экономит место и время. Как это работает?

  1. Полный (Full) – резервирует всё.
  2. Дифференциальный – копирует только изменения с последнего полного бэкапа.
  3. Инкрементальный – копирует только изменения с последнего любого бэкапа.

📌 Совет: храните минимум два полных бэкапа и несколько инкрементов между ними.

# Пример команды для duplicity (инкремент)
duplicity /home/user sftp://backup@example.com/home_user_backup/

3️⃣ Автоматизируйте с помощью cron

Планировщик задач – ваш лучший друг. Создаём простую задачу, которая будет запускать скрипт каждый день в 02:00.

# crontab -e
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

backup.sh может содержать несколько команд из предыдущих пунктов, а также проверку завершения работы:

#!/bin/bash
set -e

# Полный бэкап раз в неделю
if [ $(date +%u) -eq 1 ]; then
    rsync -avz --delete /var/www/ backup@example.com:/mnt/backups/
fi

# Инкрементальный каждый день
duplicity /home/user sftp://backup@example.com/home_user_backup/

4️⃣ Храните резервные копии в разных местах

Ни один сервер не может быть полностью защищён, если всё хранится в одном месте. Правило «3-2-1»:

Количество копий Формат хранения Где
≥ 3 Полный/инкремент Локальный диск
≥ 2 Инкремент Сетевой NAS / SAN
1 Крипт. резерв Облачное хранилище (S3, Google Cloud)
# Пример копирования в облако с помощью rclone
rclone copy backup:/mnt/backups/ remote:linux-backup/

🚨 Важно: убедитесь, что ключи шифрования не находятся на том же сервере, где хранятся бэкапы.


5️⃣ Проверяйте целостность резервных копий

Создавайте регулярные тесты восстановления. Это можно автоматизировать с помощью testbackup.sh.

#!/bin/bash
set -e

# Восстановление из последнего инкремента
duplicity --restore /home/user /tmp/test_restore/

# Сравнение контрольных сумм
tar -cf - /var/www | sha256sum > /tmp/sha_original
cat /tmp/test_restore/www.tar.gz | tar -xf - -O | sha256sum > /tmp/sha_restored

diff /tmp/sha_original /tmp/sha_restored && echo "✅ Проверка пройдена" || echo "❌ Не совпадают!"

Запускайте этот скрипт еженедельно в отдельном cron‑задании.


6️⃣ Документируйте и храните план восстановления

Код без документации – это просто код. Создайте README.md рядом с вашими скриптами:

# План восстановления Linux

## Требования
- SSH доступ к серверу: backup@example.com
- rclone настроен для remote:linux-backup

## Полный бэкап
`rsync -avz --delete /var/www/ backup@example.com:/mnt/backups/`

## Инкрементальный
`duplicity /home/user sftp://backup@example.com/home_user_backup/`

## Восстановление
1. Подключитесь к серверу.
2. Выполните `./restore.sh`.
3. Проверьте логи в `/var/log/backup.log`.


Заключение

Резервное копирование — это не просто копирование файлов, а системный подход к защите данных. Если вы:

  • выберете надёжный инструмент,
  • будете делать инкрементные бэкапы,
  • автоматизируете процессы с cron,
  • храните данные в разных местах и
  • регулярно проверяете их целостность,

то паника при потере данных останется только в теории.

💡 Последний совет: держите ваш резервный скрипт в системе контроля версий (Git) и периодически обновляйте его, чтобы он оставался актуальным даже после обновлений ОС.

Соблюдая простые правила, вы превратите бэкап‑процесс из источника стресса в надёжный «защитник» вашего Linux‑серверов. 🚀

Метки: