← К вики

Резервные копии

Как самостоятельно настроить резервное копирование данных с 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 ... &.

Полезные ссылки

Следующие статьи

Сейчас работают только те cookie, без которых сайт не откроется. Разрешите ещё аналитические — будем видеть, где интерфейс мешает, и чинить это.