#!/bin/bash # Конфигурация TELEGRAM_BOT_TOKEN="6414077478:AAFk03HezovLT2kO_i9OYswH8Weirsgp9GU" TELEGRAM_CHAT_ID="-1002176559344" MINIO_TARGET="tw/3c580be9-5ad7b4ab-08c3-4eeb-90b9-767746b1d4a7/gitea" CONTAINER_NAME="gitea" TEMP_DIR="/tmp" # Функция для отправки сообщения в Telegram send_telegram() { local message="$1" curl -s -X POST \ "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \ -d "chat_id=${TELEGRAM_CHAT_ID}" \ -d "text=${message}" \ -d "parse_mode=Markdown" >/dev/null } # Логирование log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" } # Основной процесс log "Начало создания резервной копии Gitea" # Делаем дамп Gitea log "Запуск gitea dump в контейнере" dump_output=$(podman exec -u git -it -w /tmp $CONTAINER_NAME gitea dump 2>&1) # Парсим последнюю строку вывода для получения пути к файлу last_line=$(echo "$dump_output" | tail -n 1) zip_file=$(echo "$last_line" | grep -oP '/tmp/gitea-dump-\d+\.zip') rm $TEMP_DIR/gitea-dump-\d+\.zip # Копируем файл из контейнера log "Копирование $zip_file из контейнера в $zip_file" podman cp "$CONTAINER_NAME:$zip_file" "$zip_file" if [ ! -f "$zip_file" ]; then error_msg="Ошибка: не удалось скопировать файл из контейнера" log "$error_msg" send_telegram "❌ Gitea backup failed: $error_msg" exit 1 fi # Загружаем файл в Minio log "Загрузка файла в Minio: $MINIO_TARGET/$zip_file" mc cp "$zip_file" "$MINIO_TARGET/dump.zip" if [ $? -ne 0 ]; then error_msg="Ошибка при загрузке файла в Minio" log "$error_msg" send_telegram "❌ Gitea backup failed: $error_msg" exit 1 fi # Удаляем файл в контейнере log "Удаление файла в контейнере: $zip_file" podman exec $CONTAINER_NAME rm -f "$zip_file" # Удаляем временный файл на хосте log "Удаление временного файла: $zip_file" rm -f "$zip_file" # Отправляем уведомление об успехе success_msg="✅ Совершён бэкап Gitea: " log "$success_msg" send_telegram "$success_msg" log "Резервное копирование успешно завершено" exit 0