Резервное копирование сервера: руководство по бэкапу

Резервное копирование сервера: руководство по бэкапу

Резервное копирование (бэкап) сервера — это критически важная задача. Не существует одного универсального рецепта, так как стратегия зависит от ОС, важности данных и допустимого времени простоя.

Вот подробное руководство, как организовать бэкап сервера.

1. Планирование и стратегия (Самое главное!)

Прежде чем что-то делать, ответьте на эти вопросы:

·        Что бэкапить? (Весь сервер или только данные?)

o Только данные: Базы данных, файлы пользователей, конфигурационные файлы (/etc), логи.

o Полный образ системы: Вся операционная система со всеми настройками, чтобы быстро восстановить сервер "как был" после сбоя.

·        Куда бэкапить? (Правило 3-2-1)

o 3 копии данных.

o 2 разных типа носителей (например, HDD и облако).

o 1 копия в другом географическом месте.

o Пример: Локальный диск -> Облако (S3, Backblaze) -> Другой сервер в дата-центре.

·        Как часто? (RPO - Recovery Point Objective)

o Какой объем данных вы готовы потерять? 24 часа? 1 час? 5 минут?

o От этого зависит частота бэкапов: раз в день, раз в час, непрерывно.

·        Как быстро восстановить? (RTO - Recovery Time Objective)

o Сколько времени у вас есть на восстановление? Это определит метод (восстановление файлов из архива vs. развертывание полного образа).

·        Сколько хранить?

o Последние 7 дней? 30 дней? Помесячные архивы за год?


2. Что именно нужно бэкапить на сервере?

Для Linux-серверов:

·        /home — домашние каталоги пользователей.

·        /var — изменяемые данные: логи (/var/log), почта, кэши, файлы веб-сайтов (часто в /var/www).

·        /etc — конфигурационные файлы всей системы и сервисов.

·        Базы данных — дампы SQL (MySQL/PostgreSQL) или файлы данных. Никогда не копируйте работающие файлы БД простым cp!

·        /opt или /usr/local — кастомное установленное ПО.

·        Список установленных пакетов (например, dpkg --get-selections > packages.list для Debian/Ubuntu).

Для Windows-серверов:

·        Папка пользователей (C:\Users).

·        Данные приложений (например, C:\Program Files\YourApp\Data).

·        Файлы веб-сайтов (если это IIS, C:\inetpub).

·        Системный реестр (для бэкапа ключевых разделов).

·        Состояние системы (Volume Shadow Copy Service - VSS) — для создания консистентных снимков томов, даже если файлы заняты.


3. Методы и инструменты для бэкапа

A. Ручное копирование (для разовых операций)

·        scp / rsync (Linux): Для копирования файлов на другой сервер.

bash

rsync -avz --delete /path/to/source/ user@backup-server:/path/to/destination/

·        tar / zip (Linux/Windows): Создание архивов.

bash

tar -czf backup-$(date +%Y%m%d).tar.gz /home /etc /var/www

B. Автоматизированные инструменты (для постоянной стратегии)

Для Linux:

1. BorgBackup / Restic:

o Плюсы: Дедупликация, шифрование, сжатие. Очень эффективно используют место. Хранят историю снимков.

o Пример Borg:

bash

# Инициализация репозитория

borg init --encryption=repokey /path/to/backup/repo

# Создание бэкапа

borg create --stats /path/to/backup/repo::server-{now} /home /etc /var/www

# Просмотр списка бэкапов

borg list /path/to/backup/repo

2. Duplicity / Duply:

o Плюсы: Поддерживает инкрементальные бэкапы и загрузку в облака (S3, GCS, Dropbox).

3. Bacula / Bareos:

o Плюсы: Корпоративное, клиент-серверное решение. Мощная система управления и планирования.

o Минусы: Сложная настройка.

4. Скрипты + cron:

o Вы можете написать свой скрипт на Bash, который будет делать дампы БД, архивировать файлы и копировать их через rsync или scp на удаленный хост, а затем удалять старые бэкапы. Запускать его по расписанию в cron.

Для Windows:

1.     Veeam Agent for Microsoft Windows FREE:

o Плюсы: Бесплатный, мощный, создает полные образы системы, прост в использовании.

2. Windows Server Backup (wsb):

o Встроенное решение. Достаточно для базовых задач.

3. UrBackup:

o Бесплатное, кроссплатформенное, клиент-серверное решение.

C. Бэкап баз данных (отдельная важная тема)

·        MySQL/MariaDB:

bash

# Создание дампа

mysqldump -u username -p database_name > backup-$(date +%Y%m%d).sql

# Или используя утилиту с бинлогами для Point-in-Time Recovery

mariabackup / xtrabackup (для InnoDB) — создают горячие (без остановки) физические бэкапы.

·        PostgreSQL:

bash

# Создание дампа

pg_dump database_name > backup-$(date +%Y%m%d).sql

# Или физический бэкап с помощью pg_basebackup

pg_basebackup -D /path/to/backup -Ft -P -U replication_user

size=1 width="100%" align=center>

4. Пример автоматизированного пайплайна для Linux-сервера

Допустим, у нас веб-сервер с Nginx, PHP и MySQL.

1. Создаем скрипт ~/backup.sh:

bash

#!/bin/bash

# Переменные

BACKUP_DIR="/local/backups"

REMOTE_USER="backup-user"

REMOTE_HOST="backup-server.com"

REMOTE_PATH="/backups/"

DB_USER="backup-user"

DB_PASSWORD="secure_password"

DB_NAME="my_database"

# Создаем директорию для сегодняшнего бэкапа

TODAY=$(date +%Y%m%d)

mkdir -p $BACKUP_DIR/$TODAY

# 1. Бэкап базы данных

mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$TODAY/db.sql

# 2. Бэкап конфигов и сайтов

tar -czf $BACKUP_DIR/$TODAY/configs.tar.gz /etc/nginx /etc/php

tar -czf $BACKUP_DIR/$TODAY/websites.tar.gz /var/www/html

# 3. Копируем на удаленный сервер через rsync

rsync -avz --delete $BACKUP_DIR/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH

# 4. Очистка старых локальных бэкапов (старше 7 дней)

find $BACKUP_DIR/* -type d -mtime +7 -exec rm -rf {} \;

echo "Backup completed on $(date)" >> /var/log/backup.log

2. Даем права на выполнение:

bash

chmod +x ~/backup.sh

3. Настраиваем автоматический запуск каждую ночь в 2:00 через cron:

bash

crontab -e

# Добавляем строку:

0 2 * * * /home/username/backup.sh

size=1 width="100%" align=center>

5. Проверка восстановления! (Самый важный шаг)

Бэкап без проверки — это не бэкап.

Регулярно (раз в квартал/месяц) проводите учения:

1.     Восстановите несколько критичных файлов из бэкапа на тестовую машину.

2.     Проверьте их целостность.

3.     Попробуйте развернуть полный образ системы на виртуальную машину и убедитесь, что она загружается и работает.

Ключевые выводы

1.     Автоматизируйте: Все бэкапы должны выполняться автоматически по расписанию.

2.     Проверяйте: Регулярно тестируйте процесс восстановления.

3.     Следуйте правилу 3-2-1: Храните копии в разных местах.

4.     Шифруйте: Особенно если бэкапы хранятся в облаке или на удаленных серверах.

5.     Логируйте: Всегда ведите лог операций бэкапа, чтобы видеть ошибки.

Начните с простого скрипта и cron, а по мере роста важности сервера переходите на более продвинутые инструменты вроде BorgBackup или Veeam.


   28.11.2025 09:27:45
Автор статьи:
Краснов Эрнест Маркович ©
ЕЩЕ ПО ТЕМЕ