5 мин.

Резервное копирование Linux: простые способы

Резервное копирование – это единственная гарантия быстрого восстановления вашего проекта после сбоя, ошибки или взлома.

На виртуальном сервере с root-доступом вы несете полную ответственность за сохранность данных. Без работающей системы бэкапов один неверный аргумент в команде rm -rf, сбой диска или критическая уязвимость в ядре Linux (как недавняя Fragnesia) могут привести к полной потере сайта, базы данных и конфигураций.

Зачем вашему VPS жизненно необходимы резервные копии

VPS предоставляет вам не только полный контроль, но и увеличивает ответственность. Надежный хостинг-провайдер, такой как Mnogoweb, гарантирует стабильность инфраструктуры и доступность сервера по SLA, однако не страхует от рисков внутри вашей операционной системы.

Ключевые угрозы, от которых защищают бэкапы:

  • Ошибки администратора: случайное удаление критических файлов или ошибочное изменение конфигураций.
  • Сбои оборудования: выход из строя диска (NVMe/SSD), что может привести к повреждению файловой системы.
  • Взлом и уязвимости: эксплуатация уязвимостей (например, недавно найденные уязвимости в ядре Linux), позволяющих злоумышленнику получить права root. Следы таких атак иногда исчезают после перезагрузки, что усложняет диагностику и делает восстановление из чистой копии единственным надежным решением.
  • Неудачные обновления: сбой при обновлении ядра, пакетов, CMS (WordPress, Joomla и других) или критических библиотек.
  • Повреждение базы данных: ошибки в запросах, сбои СУБД или атаки типа SQL-инъекций.

Бэкап – это не дополнительная опция, а обязательный элемент эксплуатации любого сервера, от небольшого сайта до корпоративного приложения.

Что именно копировать на Linux-сервере

Вместо абстрактного «бэкапить всё» сфокусируйтесь на конкретных категориях данных. Начните с самого ценного для вашего проекта.

  1. Файлы проекта: корневая директория сайта (часто /var/www или /home/<user>/www), исходный код приложений, загруженные пользователями изображения, документы и другие файлы.
  2. Базы данных: содержимое MySQL, MariaDB, PostgreSQL или SQLite базы, используемой проектом. Это основа динамических сайтов, интернет-магазинов и систем управления.
  3. Конфигурации: файлы из директории /etc: это конфиги веб-сервера (Nginx, Apache), настройки SSH, firewall, системных служб, а также задания cron.
  4. Данные пользователей: домашние директории системных пользователей в папке /home, файлы почтовых ящиков, логи приложений для анализа.

Простые инструменты для бэкапов

Для настройки резервного копирования не всегда нужны сложные коммерческие системы. В Linux есть все необходимые инструменты.

Архивация данных с помощью tar

Утилита tar создает цельные архивные копии, идеальные для долгосрочного хранения или переноса проекта.

Например, если проект хранится в папке /var/www/project, команда будет следующей:

tar -czpf /backup/site-$(date +%Y%m%d).tar.gz /var/www/project/ --exclude='/var/www/project/cache'

Разберем ключи: -c – создать архив, -z – сжать с помощью gzip, -p – сохранить права доступа, -f – указать имя файла. Опция --exclude позволяет исключить временные или кэшированные данные, экономя место.

Синхронизация и копирование через rsync

Rsync – это инструмент для эффективного инкрементального копирования. Он передает только измененные части файлов, что экономит время и трафик.

Локальная синхронизация на отдельный раздел:

rsync -av /var/www/ /backup/www/

Копирование на удаленный сервер (например, отдельный VPS для бэкапов) по SSH:

rsync -avz -e ssh /var/www/ user@backup-server.ru:/backups/

Ключи: -a – архивный режим (сохраняет атрибуты), -v – подробный вывод, -z – сжатие при передаче.

Создание дампа базы данных MySQL/MariaDB

Для резервирования базы данных используйте mysqldump. Для таблиц InnoDB применяйте опцию --single-transaction, чтобы не блокировать записи на время создания дампа.

Пример команды для копирования БД database пользователя username:

mysqldump -u username -p --single-transaction database > /backup/db-$(date +%Y%m%d).sql

Восстановление из дампа выполняется командой:

mysql -u username -p database < /backup/db-20250514.sql

Как настроить Cron для регулярных бэкапов

Ручные бэкапы ненадежны, поскольку их нужно запускать вручную, что может забыться в потоке работы и прочих дел. Планировщик задач Cron превращает такие ручные команды в автоматическую систему.

Пример рабочего скрипта для Cron

Создайте файл /root/backup.sh с таким содержимым:

#!/bin/bash

# Настройки
BACKUP_DIR="/backup"
DB_NAME="database"
DB_USER="username"
DB_PASSWORD="password"
SITE_ROOT="/var/www"
REMOTE_HOST="user@backup-server.ru"
REMOTE_DIR="/backups"
DATE=$(date +%Y%m%d)

# Дамп базы данных
mysqldump -u $DB_USER -p$DB_PASSWORD --single-transaction $DB_NAME > $BACKUP_DIR/db-$DATE.sql 2>> /var/log/backup.log

# Архивирование файлов сайта
tar -czpf $BACKUP_DIR/site-$DATE.tar.gz $SITE_ROOT 2>> /var/log/backup.log

# Копирование на удаленный сервер
rsync -avz $BACKUP_DIR/db-$DATE.sql $BACKUP_DIR/site-$DATE.tar.gz $REMOTE_HOST:$REMOTE_DIR/ 2>> /var/log/backup.log

# Проверка выполнения
if [ $? -eq 0 ]; then
    echo "[$DATE] Backup completed successfully" >> /var/log/backup.log
else
    echo "[$DATE] Backup FAILED!" >> /var/log/backup.log
fi

Не забудьте дать скрипту права на выполнение:

chmod +x /root/backup.sh

Автоматическое удаление старых бэкапов

Чтобы диск не переполнялся, можно добавить в скрипт команду для автоматического удаления копий старше, например, 30 дней:

# Удаление локальных бэкапов старше 30 дней
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete

Настройте запуск скрипта ежедневно в 2:00 ночи, добавив задание в Cron. Обычно это делается командой crontab -e или путём добавления файла в папку /etc/cron.d.

0 3 * * * /root/backup.sh >> /var/log/backup.log 2>&1

Где хранить резервные копии?

Хранение бэкапа на том же сервере – это иллюзия защиты. При физическом сбое диска в сервере, при аварии в дата-центре вы рискуете потерять и основной сервер, и все копии. Следуйте правилу «3-2-1»: три копии данных, на двух разных серверах, одна копия – обязательно вне площадки.

  1. Отдельный диск или раздел на том же сервере: лучше, чем ничего, но не спасёт вас от сбоя всего сервера.
  2. Другой VPS в иной локации: аренда недорогого виртуального сервера с большим диском специально для бэкапов – эффективное решение. Вы можете развернуть такой сервер в другой стране или на другом конце страны для дополнительной отказоустойчивости.
  3. Специализированное облачное хранилище: используйте FTP-хранилище или S3-совместимые сервисы, как правило это уже готовая и масштабируемая инфраструктура для хранения данных. Также можно воспользоваться DropBox, Яндекс.Диск и аналогичными сервисами.
  4. Локальный компьютер: для критически важных данных важно не забывать периодически скачивать бэкапы.

Для российских проектов оптимальным решением будет размещение основного сервера и хранилища бэкапов в России. Например, Mnogoweb предлагает серверы в Москве и в Новосибирске.

Проверка надёжнои системы

Настроить создание бэкапов – только половина дела. Нужно ещё сделать построенную систему гарантированно рабочей.

  • Главное правило: периодически проверяйте восстановление из бэкапа на тестовом стенде. Бэкап, который не проверен на восстановление, это не бэкап. Раз в квартал проверяйте, что архив распаковывается, а дамп базы данных успешно импортируется.
  • Автоматизация надежнее ручных действий: доверьте работу Cron и скриптам.
  • Настройте мониторинг: добавьте в скрипт отправку уведомления на email или в мессенджер в случае ошибки, регулярно проверяйте логи.
  • Документируйте процесс восстановления: в критической ситуации не будет времени вспоминать последовательность команд, создайте чёткий чеклист: остановить сервисы, распаковать архив, импортировать БД, проверить конфиги.
  • Защищайте сами бэкапы: по возможности старайтесь храните их в зашифрованном виде, особенно при использовании облачных хранилищ, и ограничивайте доступ по SSH ключам, а не паролям.

Создание отказоустойчивой инфраструктуры начинается с выбора правильного хостинга. Надёжные и производительные виртуальные серверы на базе KVM-виртуализации с быстрыми дисками вы найдете в Mnogoweb.

Для проектов, требующих максимальной скорости в России, рассмотрите VPS в Москве или VPS в Новосибирске.