Резервные копии
Как самостоятельно настроить резервное копирование данных с VPS через rsync, restic и tar.
Время: 20 мин · Сложность: ★★☆☆☆
Подходит: ✓ Ubuntu 22.04 · ✓ Debian 12 · ✓ AlmaLinux 9
Краткое описание
Cheesecake Cloud не предоставляет резервное копирование как услугу платформы. Ваши данные — ваша ответственность. В этой статье — как настроить бэкапы самостоятельно с помощью rsync, restic и tar.
Когда пригодится
- Нужно защитить данные от случайного удаления или сбоя
- Хотите настроить регулярный автоматический бэкап на другой сервер
- Планируете переустановку ОС и хотите сохранить данные
Что понадобится
- SSH-доступ к серверу
- Место для хранения: отдельный VPS, объектное хранилище или локальный компьютер
- Не храните бэкапы на том же сервере — при аварии потеряете и данные, и копии
Пошаговая инструкция
rsync — копирование файлов
Синхронизирует директории на удалённый сервер по SSH.
1. Установите rsync (обычно уже установлен):
apt install rsync # Debian/Ubuntu
dnf install rsync # AlmaLinux
2. Скопируйте нужные директории:
# Веб-файлы
rsync -avz /var/www/ user@backup-host:/backups/www/
# Конфиги
rsync -avz /etc/ user@backup-host:/backups/etc/
Флаги -avz: архивный режим (сохраняет права и даты), вербальный вывод, сжатие.
3. Добавьте в cron для автозапуска:
crontab -e
Строка для ежедневного запуска в 3:00:
0 3 * * * rsync -avz /var/www/ user@backup-host:/backups/www/ >> /var/log/backup.log 2>&1
Дамп базы данных
MySQL / MariaDB:
mysqldump -u root -p --all-databases > /root/db-$(date +%Y%m%d).sql
PostgreSQL:
pg_dumpall -U postgres > /root/db-$(date +%Y%m%d).sql
Скопируйте дамп на другой сервер:
scp /root/db-*.sql user@backup-host:/backups/db/
restic — инкрементальные бэкапы
Сохраняет только изменившиеся блоки, поддерживает шифрование, работает с SFTP, S3 и Backblaze B2.
1. Установите restic:
apt install restic # Debian/Ubuntu
dnf install restic # AlmaLinux
2. Инициализируйте репозиторий:
# По SFTP на backup-сервер
restic init --repo sftp:user@backup-host:/backups/restic
Введите и запомните пароль репозитория — без него данные не расшифровать.
3. Создайте снимок:
restic -r sftp:user@backup-host:/backups/restic backup /var/www /etc /root
4. Просмотрите сохранённые снимки:
restic -r sftp:user@backup-host:/backups/restic snapshots
5. Восстановите данные:
# Восстановить последний снимок в /restore
restic -r sftp:user@backup-host:/backups/restic restore latest --target /restore
# Восстановить отдельную директорию
restic -r sftp:user@backup-host:/backups/restic restore latest --target /restore --include /etc/nginx
6. Добавьте в cron:
# Сохраните пароль в файл
echo "ваш-пароль" > /root/.restic-pass && chmod 600 /root/.restic-pass
crontab -e
# Ежедневно в 2:00
0 2 * * * restic -r sftp:user@backup-host:/backups/restic --password-file /root/.restic-pass backup /var/www /etc >> /var/log/restic.log 2>&1
tar — быстрый архив вручную
Для разовой копии перед рискованным изменением:
tar -czf /tmp/backup-$(date +%Y%m%d).tar.gz /var/www /etc
scp /tmp/backup-*.tar.gz user@backup-host:/backups/
Проверка результата
Убедитесь, что бэкап восстановим:
# rsync: проверьте файлы на backup-сервере
ssh user@backup-host ls -la /backups/www/
# restic: список снимков
restic -r sftp:user@backup-host:/backups/restic snapshots
# tar: проверьте содержимое архива
tar -tzf /tmp/backup-*.tar.gz | head -20
Возможные ошибки
rsync: Permission denied
Проверьте, что SSH-ключ добавлен на backup-сервер и у пользователя есть права на запись:
ssh user@backup-host "ls /backups/"
restic: wrong password
Пароль репозитория нельзя восстановить. Храните его в надёжном месте — например, в менеджере паролей.
mysqldump: Access denied
Укажите явно пользователя с правами на дамп или создайте ~/.my.cnf:
[client]
user=root
password=ваш-пароль
Установите права: chmod 600 ~/.my.cnf.
FAQ
Платформа делает бэкапы за меня?
Нет. Cheesecake Cloud не предоставляет резервное копирование на уровне платформы. Ваши данные — ваша ответственность.
Куда хранить бэкапы?
Варианты: отдельный VPS Cheesecake Cloud, объектное хранилище (Backblaze B2, AWS S3), домашний NAS или компьютер по SSH. Главное — не на том же сервере.
Как часто делать бэкапы?
Для продакшн-сайта — ежедневно, для активной базы данных — раз в несколько часов. Решайте исходя из того, сколько данных вы готовы потерять.
Бэкап долго работает?
rsync при первом запуске копирует всё, при последующих — только изменения. restic работает инкрементально с первого раза. Для больших объёмов запускайте в фоне: nohup rsync ... &.
Полезные ссылки
Следующие статьи
- Переустановка ОС — начать заново с чистым диском
- Rescue-режим — восстановление без переустановки