Резервное копирование /etc

Директория /etc — это нервный центр любой Linux-системы. В ней хранятся все ключевые конфигурационные файлы: от настроек сети и веб-сервера до параметров пользователей и прав доступа. Потеря или повреждение этих файлов может полностью вывести сервер из строя.

Поэтому регулярное и правильное резервное копирование /etc — одна из первоочередных задач системного администратора. Давайте рассмотрим два надежных подхода к этой задаче: классический и современный.

Способ 1: Простой и надежный (ежедневный архив)

Этот метод заключается в создании полного архива директории /etc по расписанию. Это проверенный временем подход, который легко настроить.

Скрипт для резервного копирования:

Создадим простой bash-скрипт, который будет архивировать директорию и удалять старые копии.

#!/bin/bash

# Директория, куда будем сохранять бэкапы
BACKUP_DIR="/var/backup/etc"
# Количество дней, которое нужно хранить бэкапы
DAYS_TO_KEEP=360

# Создаем директорию для бэкапов, если она не существует
mkdir -p ${BACKUP_DIR}

# Формируем имя файла с текущей датой
BACKUP_FILENAME="etc-backup-$(date +%Y-%m-%d).tar.gz"
BACKUP_FULL_PATH="${BACKUP_DIR}/${BACKUP_FILENAME}"

# Создаем tar.gz архив директории /etc
tar -czf ${BACKUP_FULL_PATH} /etc

# Удаляем бэкапы старше DAYS_TO_KEEP дней
find ${BACKUP_DIR} -type f -mtime +${DAYS_TO_KEEP} -delete

echo "Резервное копирование /etc успешно завершено: ${BACKUP_FULL_PATH}"

Настройка расписания (cron)

  1. Сохраните скрипт в /root/etc_backup.sh и сделайте его исполняемым:
    chmod +x /root/etc_backup.sh
  2. Откройте редактор cron:
    crontab -e
  3. Добавьте строку для запуска скрипта каждую ночь в 3:00:
    0 3 * * * /root/etc_backup.sh > /dev/null 2>&1

Плюсы:

  • Простота и прозрачность.
  • Легко восстановить состояние на определенный день.

Минусы:

  • Не видно, какие именно файлы и строчки изменились между бэкапами.
  • Если критическое изменение произошло в течение дня, вы узнаете о нем только из бэкапа прошлой ночи.

Способ 2: Продвинутый и рекомендуемый (контроль версий с Etckeeper)

Etckeeper
Etckeeper — это утилита, которая превращает вашу директорию /etc в полноценный Git-репозиторий (или репозиторий другой системы контроля версий).
Главное преимущество Etckeeper в том, что он автоматически отслеживает изменения. Он интегрируется с пакетными менеджерами (apt, dnf, yum) и создает коммит (точку сохранения) до и после установки, обновления или удаления любого ПО. Вы всегда будете знать, какое именно действие привело к изменению конфигурации.

Как настроить и использовать Etckeeper

Шаг 1: Установка

Для Debian/Ubuntu:
sudo apt update && sudo apt install Etckeeper

Для CentOS/Fedora/RHEL:
sudo dnf install Etckeeper

Шаг 2: Первая инициализация

Сразу после установки Etckeeper автоматически создаст Git-репозиторий в /etc, выполнит базовую настройку и сделает первый коммит. Вы можете проверить это командой:
sudo git -C /etc log --oneline

Шаг 3: Как это работает на практике?

Допустим, вы устанавливаете веб-сервер Nginx: sudo apt install nginx. Etckeeper автоматически сделает два коммита: один — прямо перед установкой, второй — сразу после.

Теперь, если вы снова посмотрите историю, вы увидите новые записи.

Пример вывода лога:
d1e7a6f (HEAD -> master) committing changes in /etc after apt run
a3b1c8f saving uncommitted changes in /etc prior to apt run
f9e1d0a Initial commit

Шаг 4: Просмотр изменений

Вы можете в любой момент посмотреть, что именно изменилось.

  • Посмотреть список измененных файлов:
    sudo git -C /etc status
  • Посмотреть изменения в конкретном файле:
    sudo git -C /etc diff nginx/nginx.conf
  • Отменить изменения в файле, вернув его к последней сохраненной версии:
    sudo git -C /etc checkout -- nginx/nginx.conf

Какой способ выбрать? Идеальный вариант — оба!

Эти два метода не исключают, а прекрасно дополняют друг друга:

  1. Etckeeper используется для ежедневного, детального контроля над изменениями. Он ваш "черный ящик", который фиксирует каждое действие и позволяет легко отследить причину поломки или откатить неудачную правку.
  2. Архивация по cron используется для создания полных снимков для долгосрочного хранения и аварийного восстановления. Эти архивы стоит периодически копировать на внешний, независимый носитель (другой сервер, облачное хранилище).

Такой двухконтурный подход обеспечивает максимальную защиту "мозга" вашей системы

Оставить комментарий