// server management

Как настроить автоматическое резервное копирование на Linux VPS: полное руководство

August 05, 2026 · by CLIQHOST

Как настроить автоматическое резервное копирование на Linux VPS: полное руководство

Одна из самых распространённых ошибок администраторов серверов — откладывать настройку резервного копирования. «Сделаю завтра» слишком легко превращается в «вчера я потерял все данные». На Linux VPS автоматического резервного копирования по умолчанию не существует — его необходимо настроить вручную. Хорошая новость: это проще, чем кажется, и данное руководство объяснит всё шаг за шагом.

Почему нужны автоматические резервные копии

Прежде чем перейти к технической части, разберёмся, почему ручные бэкапы не являются надёжным решением:

  • Человеческий фактор — случайно удалённый файл, ошибочная команда rm -rf или неудачное обновление могут уничтожить критически важные данные за секунды.
  • Кибератаки — программы-вымогатели и дефейсмент сайтов — реальная угроза. Без резервной копии восстановление невозможно.
  • Аппаратные сбои — даже на качественных SSD-серверах инфраструктурные проблемы случаются.
  • Неудачные обновления — обновление ядра или приложения может сломать всю систему.

Надёжная стратегия резервного копирования следует правилу 3-2-1: 3 копии данных, на 2 разных носителях, одна из которых — удалённая (off-site).

Необходимые инструменты

Для этого руководства используются стандартные инструменты Linux, доступные на любом дистрибутиве (Ubuntu, Debian, CentOS, AlmaLinux):

  • tar — для архивирования директорий
  • rsync — для эффективной инкрементальной синхронизации
  • cron — для автоматического планирования задач
  • mysqldump — для экспорта баз данных MySQL/MariaDB
  • (Опционально) rclone — для автоматической загрузки в облако (Google Drive, S3, Backblaze)

Шаг 1: Создание структуры директорий для резервных копий

Подключитесь к VPS через SSH и создайте организованную структуру:

mkdir -p /backup/{files,databases,logs}
chmod 700 /backup

Директория /backup будет содержать:
- /backup/files — архивы файлов сервера
- /backup/databases — дампы MySQL
- /backup/logs — журналы операций резервного копирования

Шаг 2: Скрипт резервного копирования файлов с помощью tar

Создайте файл /usr/local/bin/backup-files.sh:

nano /usr/local/bin/backup-files.sh

Добавьте следующее содержимое:

#!/bin/bash

DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/backup/files"
SOURCE_DIRS="/var/www /etc /home"
LOG="/backup/logs/files-$DATE.log"
RETENTION_DAYS=7

echo "[$(date)] Начало резервного копирования файлов..." >> "$LOG"

tar -czf "$BACKUP_DIR/files-$DATE.tar.gz" $SOURCE_DIRS 2>> "$LOG"

if [ $? -eq 0 ]; then
  echo "[$(date)] Резервная копия создана: files-$DATE.tar.gz" >> "$LOG"
else
  echo "[$(date)] ОШИБКА при создании резервной копии!" >> "$LOG"
fi

# Удаление архивов старше $RETENTION_DAYS дней
find "$BACKUP_DIR" -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete
echo "[$(date)] Очистка старых архивов завершена." >> "$LOG"

Сохраните файл и сделайте его исполняемым:

chmod +x /usr/local/bin/backup-files.sh

Что делает этот скрипт:
- Архивирует директории /var/www, /etc и /home — там хранятся сайты, конфигурации и пользовательские данные
- Сохраняет архив с датой в имени (например: files-2025-01-15.tar.gz)
- Автоматически удаляет архивы старше 7 дней для экономии места
- Записывает каждую операцию в лог-файл

Шаг 3: Скрипт резервного копирования баз данных MySQL

Создайте /usr/local/bin/backup-databases.sh:

#!/bin/bash

DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/backup/databases"
DB_USER="root"
DB_PASS="ваш_пароль_mysql"
LOG="/backup/logs/db-$DATE.log"
RETENTION_DAYS=7

echo "[$(date)] Начало резервного копирования баз данных..." >> "$LOG"

# Экспорт каждой базы данных отдельно
for DB in $(mysql -u"$DB_USER" -p"$DB_PASS" -e "SHOW DATABASES;" 2>/dev/null | grep -Ev "(Database|information_schema|performance_schema|sys)"); do
  mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB" 2>> "$LOG" | gzip > "$BACKUP_DIR/$DB-$DATE.sql.gz"
  echo "[$(date)] Резервная копия создана для: $DB" >> "$LOG"
done

find "$BACKUP_DIR" -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete
echo "[$(date)] Очистка старых дампов завершена." >> "$LOG"

Совет по безопасности: Не храните пароль MySQL в открытом виде в скрипте. Используйте файл ~/.my.cnf с ограниченными правами доступа:

ini [client] user=root password=ваш_пароль_mysql
Затем выполните: chmod 600 ~/.my.cnf и удалите переменные DB_USER/DB_PASS из скрипта.

Сделайте скрипт исполняемым:

chmod +x /usr/local/bin/backup-databases.sh

Шаг 4: Инкрементальная синхронизация с rsync (опционально, но рекомендуется)

Если у вас есть второй сервер или удалённое хранилище, rsync идеально подходит для быстрой синхронизации — он передаёт только изменённые файлы:

rsync -avz --delete /backup/ user@remote-server:/external-backup/

Эту команду можно добавить в отдельный скрипт или напрямую в crontab.

Шаг 5: Автоматизация с помощью cron

Именно этот шаг превращает ручные резервные копии в автоматические. Откройте crontab от имени root:

crontab -e

Добавьте строки:

# Резервное копирование файлов — ежедневно в 02:00
0 2 * * * /usr/local/bin/backup-files.sh

# Резервное копирование баз данных — ежедневно в 03:00
0 3 * * * /usr/local/bin/backup-databases.sh

Объяснение синтаксиса cron: минута час день_месяца месяц день_недели команда

  • 0 2 * * * — каждый день в 02:00
  • 0 3 * * * — каждый день в 03:00

Бэкапы запланированы на ночное время, чтобы не влиять на производительность сервера в часы пик.

Шаг 6: Автоматическая загрузка в облако с помощью rclone

Чтобы соблюдать правило 3-2-1, резервные копии должны храниться и на удалённом ресурсе. rclone поддерживает десятки облачных провайдеров.

Установка:

curl https://rclone.org/install.sh | sudo bash

Интерактивная настройка (например, для Backblaze B2 или Google Drive):

rclone config

Следуйте инструкциям мастера настройки, выберите провайдера и выполните аутентификацию. Затем добавьте в crontab:

# Загрузка бэкапов в облако — ежедневно в 04:00
0 4 * * * rclone sync /backup/ backblaze:vps-backup-bucket/ --log-file=/backup/logs/rclone.log

Шаг 7: Регулярное тестирование резервных копий

Резервная копия, которую никто никогда не проверял, — это иллюзия безопасности. Ежемесячно проверяйте:

  1. Существование и целостность архивов:
    bash tar -tzf /backup/files/files-$(date +%Y-%m-%d).tar.gz | head -20

  2. Возможность восстановления дампов MySQL:
    bash gunzip -c /backup/databases/имябазы-$(date +%Y-%m-%d).sql.gz | mysql -u root -p test_restore

  3. Отсутствие ошибок в логах:
    bash grep -i error /backup/logs/*.log

Контроль использования дискового пространства

Периодически проверяйте, сколько места занимают резервные копии:

du -sh /backup/*
df -h /

Если место на VPS ограничено, сократите RETENTION_DAYS до 3–5 дней и используйте облако для долгосрочного хранения.

Типичные ошибки, которых следует избегать

  • Хранение бэкапов на том же диске — если диск выйдет из строя, вы потеряете и данные, и резервные копии. Всегда синхронизируйте off-site.
  • Бэкапы без тестирования — повреждённый архив, обнаруженный в момент аварии, бесполезен.
  • Пароли в открытом виде в скриптах — используйте ~/.my.cnf или переменные окружения.
  • Игнорирование логов — скрипты могут завершаться с ошибкой незаметно. Проверяйте логи еженедельно.
  • Слишком короткий период хранения — вымогательское ПО может оставаться незамеченным несколько дней. Храните минимум 7 дней резервных копий.

Заключение

Настройка автоматического резервного копирования на Linux VPS не требует дорогостоящих или сложных решений. С помощью tar, mysqldump, cron и опционально rclone можно менее чем за час создать надёжную систему, которая будет ежедневно защищать ваши данные.

Главное — не откладывать: каждый день без резервной копии — это день, когда вы рискуете потерять всё.


Если вы управляете VPS и хотите сосредоточиться на своём бизнесе, а не на ручном управлении бэкапами, CLIQHOST предлагает VPS SSD с опциями управляемого резервного копирования и круглосуточной технической поддержкой.

SHARE
// Что говорят наши клиенты

Что говорят наши клиенты

Реальные отзывы клиентов, которые доверяют CLIQHOST за производительность, надёжность и профессиональную техническую поддержку.

★★★★★

"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău