e590f541b3
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
130 lines
2.8 KiB
Markdown
130 lines
2.8 KiB
Markdown
# Настройка бекапов на сервере
|
|
|
|
## Что бекапится
|
|
- **PostgreSQL** → дамп каждую ночь → Backblaze B2
|
|
- **S3-файлы** (Hetzner Object Storage) → синхронизация → Backblaze B2
|
|
- Хранение: последние 7 дневных дампов БД + все файлы (sync зеркало)
|
|
|
|
---
|
|
|
|
## Шаг 1 — Backblaze B2: создать bucket и ключи
|
|
|
|
1. Зарегистрироваться на https://www.backblaze.com/b2/
|
|
2. **Buckets → Create a Bucket**:
|
|
- Name: `lms-backups-second-brain`
|
|
- Files in Bucket are: `Private`
|
|
3. **App Keys → Add a New Application Key**:
|
|
- Name: `lms-server`
|
|
- Access: `Read and Write`
|
|
- Bucket: `lms-backups-second-brain`
|
|
- Сохранить `keyID` и `applicationKey` — показываются один раз
|
|
|
|
---
|
|
|
|
## Шаг 2 — Установить rclone на сервере
|
|
|
|
```bash
|
|
curl https://rclone.org/install.sh | sudo bash
|
|
```
|
|
|
|
---
|
|
|
|
## Шаг 3 — Настроить rclone: Backblaze B2
|
|
|
|
```bash
|
|
rclone config
|
|
```
|
|
|
|
Ответы:
|
|
```
|
|
n (новый remote)
|
|
name: b2lms
|
|
type: b2
|
|
account: <keyID из шага 1>
|
|
key: <applicationKey из шага 1>
|
|
<Enter для остальных — defaults>
|
|
q (quit)
|
|
```
|
|
|
|
---
|
|
|
|
## Шаг 4 — Настроить rclone: Hetzner S3
|
|
|
|
Значения берём из `.env` на сервере.
|
|
|
|
```bash
|
|
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
|
|
```
|
|
|
|
Проверить:
|
|
```bash
|
|
rclone ls hetzner:lms-uploads
|
|
```
|
|
|
|
---
|
|
|
|
## Шаг 5 — Установить скрипт
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
sudo crontab -e
|
|
```
|
|
|
|
Добавить строку (запуск каждую ночь в 3:00):
|
|
```
|
|
0 3 * * * /opt/lms-backup/backup.sh >> /var/log/lms-backup.log 2>&1
|
|
```
|
|
|
|
---
|
|
|
|
## Шаг 7 — Проверить вручную
|
|
|
|
```bash
|
|
sudo /opt/lms-backup/backup.sh
|
|
tail -50 /var/log/lms-backup.log
|
|
```
|
|
|
|
---
|
|
|
|
## Восстановление из бекапа
|
|
|
|
### База данных
|
|
```bash
|
|
# Скачать нужный дамп с 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
|
|
```
|
|
|
|
### Файлы
|
|
```bash
|
|
# Синхронизировать файлы обратно на Hetzner S3
|
|
rclone sync b2lms:lms-backups-second-brain/files hetzner:lms-uploads
|
|
```
|