e590f541b3
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
Настройка бекапов на сервере
Что бекапится
- PostgreSQL → дамп каждую ночь → Backblaze B2
- S3-файлы (Hetzner Object Storage) → синхронизация → Backblaze B2
- Хранение: последние 7 дневных дампов БД + все файлы (sync зеркало)
Шаг 1 — Backblaze B2: создать bucket и ключи
- Зарегистрироваться на https://www.backblaze.com/b2/
- Buckets → Create a Bucket:
- Name:
lms-backups-second-brain - Files in Bucket are:
Private
- Name:
- App Keys → Add a New Application Key:
- Name:
lms-server - Access:
Read and Write - Bucket:
lms-backups-second-brain - Сохранить
keyIDиapplicationKey— показываются один раз
- Name:
Шаг 2 — Установить rclone на сервере
curl https://rclone.org/install.sh | sudo bash
Шаг 3 — Настроить rclone: Backblaze B2
rclone config
Ответы:
n (новый remote)
name: b2lms
type: b2
account: <keyID из шага 1>
key: <applicationKey из шага 1>
<Enter для остальных — defaults>
q (quit)
Шаг 4 — Настроить rclone: Hetzner S3
Значения берём из .env на сервере.
rclone config
Ответы:
n
name: hetzner
type: s3
provider: Other
env_auth: false
access_key_id: <S3_ACCESS_KEY>
secret_access_key: <S3_SECRET_KEY>
region: <пусто — Enter>
endpoint: <S3_ENDPOINT, например: fsn1.your-objectstorage.com>
<Enter для остальных>
q
Проверить:
rclone ls hetzner:lms-uploads
Шаг 5 — Установить скрипт
sudo mkdir -p /opt/lms-backup
sudo cp scripts/backup.sh /opt/lms-backup/backup.sh
sudo chmod +x /opt/lms-backup/backup.sh
Шаг 6 — Настроить cron
sudo crontab -e
Добавить строку (запуск каждую ночь в 3:00):
0 3 * * * /opt/lms-backup/backup.sh >> /var/log/lms-backup.log 2>&1
Шаг 7 — Проверить вручную
sudo /opt/lms-backup/backup.sh
tail -50 /var/log/lms-backup.log
Восстановление из бекапа
База данных
# Скачать нужный дамп с B2
rclone copy b2lms:lms-backups-second-brain/db/db_20260408_0300.sql.gz /tmp/
# Восстановить в контейнер
gunzip -c /tmp/db_20260408_0300.sql.gz \
| docker exec -i lms-system-db-1 psql -U lms_user lms_db
Файлы
# Синхронизировать файлы обратно на Hetzner S3
rclone sync b2lms:lms-backups-second-brain/files hetzner:lms-uploads