Files
docker-s3-backup/README.md
S.Gromov fd2e00069b Обновлены скрипты резервного копирования для улучшения управления контейнерами
- Автоматическое определение project name из Docker labels
- Остановка и запуск контейнеров с использованием их ID вместо docker-compose
- Обновлены комментарии и документация для ясности использования
- Изменены примеры в env.example и README.md для соответствия новым изменениям
2025-10-23 22:12:18 +03:00

126 lines
3.9 KiB
Markdown
Raw Permalink 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=gitea postgres
```
**Важно:** Контейнер `backup` должен быть запущен из **того же** `docker-compose.yaml` что и целевые сервисы. Project name определяется автоматически через Docker labels.
Сервисы автоматически запустятся после создания архива.
## Лицензия
MIT