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

Docker S3 Backup

Автоматическое резервное копирование Docker-проектов в S3-хранилище по расписанию.

Что делает

  • Создаёт полный архив директории проекта
  • Загружает в S3-совместимое хранилище (Yandex Cloud, Timeweb, AWS S3, MinIO)
  • Работает по расписанию cron (по умолчанию: каждый день в 05:00 МСК)
  • Хранит только последние N версий бэкапов (по умолчанию: 30)
  • Сохраняет бекапы в папку с именем проекта: s3://bucket/project-name/
  • Опционально останавливает сервисы перед бекапом

Быстрый старт

Создайте docker-compose.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

Запустите:

docker compose up -d backup

По умолчанию:

  • Часовой пояс: Europe/Moscow
  • Расписание: каждый день в 05:00
  • Хранение: 30 последних версий
  • Папка в S3: {project-name}/

Ручной запуск бекапа

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 - Сервисы для остановки

Полезные команды

Просмотр логов:

docker logs -f project-backup
docker exec project-backup tail -f /var/log/backup.log

Проверка S3:

docker exec project-backup aws s3 ls s3://your-bucket --endpoint-url=https://your-endpoint

Расписания cron

# Каждый день в 05:00
- BACKUP_SCHEDULE=0 5 * * *

# Каждые 6 часов
- BACKUP_SCHEDULE=0 */6 * * *

# Каждое воскресенье в 02:00
- BACKUP_SCHEDULE=0 2 * * 0

# Каждые 30 минут
- BACKUP_SCHEDULE=*/30 * * * *

Остановка сервисов

Для консистентности данных можно останавливать сервисы:

environment:
  - BACKUP_STOP_SERVICES=app db

Сервисы автоматически запустятся после создания архива.

Лицензия

MIT

Description
No description provided
Readme 75 KiB
Languages
Shell 91.7%
Dockerfile 8.3%