Files
docker-s3-backup/entrypoint.sh
S.Gromov dfd626ce7b Добавлена универсальная система автоматического резервного копирования Docker-проектов
- Автоматическое создание tar.gz архивов по расписанию (cron)
- Загрузка бэкапов в S3-совместимые хранилища (Yandex Cloud, AWS S3, MinIO, Timeweb)
- Опциональная остановка сервисов перед бекапом для консистентности данных
- Автоматическое удаление старых бэкапов
- Подробное логирование всех операций
- Запуск в отдельном Docker-контейнере
2025-10-22 09:28:50 +03:00

47 lines
2.1 KiB
Bash
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.

#!/bin/bash
echo "================================================"
echo "Universal Docker Project Backup Service"
echo "================================================"
echo "Project: ${BACKUP_PROJECT_NAME:-project}"
echo "Source Path: ${BACKUP_SOURCE_PATH:-.} (mounted as /backup-source)"
echo "Timezone: ${TZ:-UTC}"
echo "Backup Schedule: ${BACKUP_SCHEDULE:-0 3 * * *}"
echo "S3 Endpoint: ${BACKUP_S3_ENDPOINT:-не указан}"
echo "S3 Bucket: ${BACKUP_S3_BUCKET:-не указан}"
echo "Retention Days: ${BACKUP_RETENTION_DAYS:-30}"
echo "Backup Type: Full project directory"
if [ -n "$BACKUP_STOP_SERVICES" ]; then
echo "Services to stop: ${BACKUP_STOP_SERVICES}"
echo "Compose file: /backup-source/docker-compose.yml (auto-detect)"
fi
echo "================================================"
# Проверка обязательных переменных
if [ -z "$BACKUP_S3_BUCKET" ] || [ -z "$BACKUP_S3_ACCESS_KEY" ] || [ -z "$BACKUP_S3_SECRET_KEY" ]; then
echo "ERROR: Не заданы обязательные переменные окружения для S3!"
echo "Необходимо указать: BACKUP_S3_BUCKET, BACKUP_S3_ACCESS_KEY, BACKUP_S3_SECRET_KEY"
exit 1
fi
# Создаем crontab файл с заданным расписанием
echo "${BACKUP_SCHEDULE:-0 3 * * *} /scripts/backup.sh >> /var/log/backup.log 2>&1" > /scripts/crontab
echo "Расписание установлено: ${BACKUP_SCHEDULE:-0 3 * * *}"
echo "Логи сохраняются в: /var/log/backup.log"
echo "================================================"
# Опционально: запускаем первый бэкап сразу при старте
if [ "${BACKUP_ON_START:-false}" = "true" ]; then
echo "Запуск начального бэкапа..."
/scripts/backup.sh >> /var/log/backup.log 2>&1
fi
echo "Запуск supercronic..."
echo "Контейнер запущен и ожидает выполнения по расписанию"
echo "================================================"
# Запускаем supercronic в foreground режиме
exec supercronic /scripts/crontab