August 05, 2026 · by Alex M.
Одна из самых распространённых ошибок администраторов серверов — откладывать настройку резервного копирования. «Сделаю завтра» слишком легко превращается в «вчера я потерял все данные». На Linux VPS автоматического резервного копирования по умолчанию не существует — его необходимо настроить вручную. Хорошая новость: это проще, чем кажется, и данное руководство объяснит всё шаг за шагом.
Прежде чем перейти к технической части, разберёмся, почему ручные бэкапы не являются надёжным решением:
rm -rf или неудачное обновление могут уничтожить критически важные данные за секунды.Надёжная стратегия резервного копирования следует правилу 3-2-1: 3 копии данных, на 2 разных носителях, одна из которых — удалённая (off-site).
Для этого руководства используются стандартные инструменты Linux, доступные на любом дистрибутиве (Ubuntu, Debian, CentOS, AlmaLinux):
tar — для архивирования директорийrsync — для эффективной инкрементальной синхронизацииcron — для автоматического планирования задачmysqldump — для экспорта баз данных MySQL/MariaDBrclone — для автоматической загрузки в облако (Google Drive, S3, Backblaze)Подключитесь к VPS через SSH и создайте организованную структуру:
mkdir -p /backup/{files,databases,logs}
chmod 700 /backup
Директория /backup будет содержать:
- /backup/files — архивы файлов сервера
- /backup/databases — дампы MySQL
- /backup/logs — журналы операций резервного копирования
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 дней для экономии места
- Записывает каждую операцию в лог-файл
Создайте /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
rsync (опционально, но рекомендуется)Если у вас есть второй сервер или удалённое хранилище, rsync идеально подходит для быстрой синхронизации — он передаёт только изменённые файлы:
rsync -avz --delete /backup/ user@remote-server:/external-backup/
Эту команду можно добавить в отдельный скрипт или напрямую в crontab.
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:000 3 * * * — каждый день в 03:00Бэкапы запланированы на ночное время, чтобы не влиять на производительность сервера в часы пик.
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
Резервная копия, которую никто никогда не проверял, — это иллюзия безопасности. Ежемесячно проверяйте:
Существование и целостность архивов:
bash
tar -tzf /backup/files/files-$(date +%Y-%m-%d).tar.gz | head -20
Возможность восстановления дампов MySQL:
bash
gunzip -c /backup/databases/имябазы-$(date +%Y-%m-%d).sql.gz | mysql -u root -p test_restore
Отсутствие ошибок в логах:
bash
grep -i error /backup/logs/*.log
Периодически проверяйте, сколько места занимают резервные копии:
du -sh /backup/*
df -h /
Если место на VPS ограничено, сократите RETENTION_DAYS до 3–5 дней и используйте облако для долгосрочного хранения.
~/.my.cnf или переменные окружения.Настройка автоматического резервного копирования на Linux VPS не требует дорогостоящих или сложных решений. С помощью tar, mysqldump, cron и опционально rclone можно менее чем за час создать надёжную систему, которая будет ежедневно защищать ваши данные.
Главное — не откладывать: каждый день без резервной копии — это день, когда вы рискуете потерять всё.
Если вы управляете VPS и хотите сосредоточиться на своём бизнесе, а не на ручном управлении бэкапами, CLIQHOST предлагает VPS SSD с опциями управляемого резервного копирования и круглосуточной технической поддержкой.
Реальные отзывы клиентов, которые доверяют CLIQHOST за производительность, надёжность и профессиональную техническую поддержку.
"Перенесли интернет-магазин с зарубежного хостинга — разница огромная: страницы открываются мгновенно, а поддержка отвечает за минуты, на румынском."
"Перенесли 12 клиентских сайтов на CLIQHOST. Бесплатная миграция, нулевой даунтайм, а настройка cPanel — именно то, что нужно нашей команде. Очень рекомендую."
"Наш VPS NVMe спокойно держит пики трафика. Полный root, локальный дата-центр и оплата в MDL — всё, что мы хотели от провайдера."