Files
docker-s3-backup/README.md
S.Gromov f8e0267b54 Обновлены скрипты и конфигурации для улучшения резервного копирования
- Изменено имя папки в S3 на имя проекта по умолчанию
- Обновлено количество хранимых версий бэкапов вместо дней
- Изменено расписание запуска бэкапов на 05:00
- Обновлены переменные окружения в примерах и документации
- Улучшено логирование и обработка старых бэкапов
2025-10-22 10:24:53 +03:00

124 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Docker S3 Backup
Автоматическое резервное копирование Docker-проектов в S3-хранилище по расписанию.
## Что делает
- Создаёт полный архив директории проекта
- Загружает в S3-совместимое хранилище (Yandex Cloud, Timeweb, AWS S3, MinIO)
- Работает по расписанию cron (по умолчанию: каждый день в 05:00 МСК)
- Хранит только последние N версий бэкапов (по умолчанию: 30)
- Сохраняет бекапы в папку с именем проекта: `s3://bucket/project-name/`
- Опционально останавливает сервисы перед бекапом
## Быстрый старт
Создайте `docker-compose.yaml`:
```yaml
services:
backup:
image: ghcr.io/gromov-io/docker-s3-backup:latest
container_name: project-backup
restart: unless-stopped
environment:
- BACKUP_PROJECT_NAME=my-project
- BACKUP_S3_BUCKET=my-backups
- BACKUP_S3_ENDPOINT=s3.twcstorage.ru
- BACKUP_S3_ACCESS_KEY=your_key
- BACKUP_S3_SECRET_KEY=your_secret
volumes:
- .:/backup-source:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
```
Запустите:
```bash
docker compose up -d backup
```
**По умолчанию:**
- Часовой пояс: `Europe/Moscow`
- Расписание: каждый день в `05:00`
- Хранение: `30` последних версий
- Папка в S3: `{project-name}/`
## Ручной запуск бекапа
```bash
docker exec project-backup /scripts/backup.sh
```
## Переменные окружения
### Обязательные
| Переменная | Описание | Пример |
|------------|----------|--------|
| `BACKUP_S3_BUCKET` | S3 бакет | `my-backups` |
| `BACKUP_S3_ENDPOINT` | S3 эндпоинт | `s3.twcstorage.ru` |
| `BACKUP_S3_ACCESS_KEY` | Ключ доступа | `your_key` |
| `BACKUP_S3_SECRET_KEY` | Секретный ключ | `your_secret` |
### Опциональные
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `TZ` | `Europe/Moscow` | Часовой пояс |
| `BACKUP_PROJECT_NAME` | `project` | Имя проекта |
| `BACKUP_SCHEDULE` | `0 5 * * *` | Расписание cron |
| `BACKUP_RETENTION_COUNT` | `30` | Количество версий |
| `BACKUP_S3_REGION` | `ru-1` | Регион S3 |
| `BACKUP_S3_FOLDER` | `{project}` | Папка в бакете |
| `BACKUP_ON_START` | `false` | Бекап при старте |
| `BACKUP_STOP_SERVICES` | - | Сервисы для остановки |
## Полезные команды
**Просмотр логов:**
```bash
docker logs -f project-backup
docker exec project-backup tail -f /var/log/backup.log
```
**Проверка S3:**
```bash
docker exec project-backup aws s3 ls s3://your-bucket --endpoint-url=https://your-endpoint
```
## Расписания cron
```yaml
# Каждый день в 05:00
- BACKUP_SCHEDULE=0 5 * * *
# Каждые 6 часов
- BACKUP_SCHEDULE=0 */6 * * *
# Каждое воскресенье в 02:00
- BACKUP_SCHEDULE=0 2 * * 0
# Каждые 30 минут
- BACKUP_SCHEDULE=*/30 * * * *
```
## Остановка сервисов
Для консистентности данных можно останавливать сервисы:
```yaml
environment:
- BACKUP_STOP_SERVICES=app db
```
Сервисы автоматически запустятся после создания архива.
## Лицензия
MIT