cloud-init/gitea-backup.sh
2025-05-02 16:49:34 +03:00

77 lines
2.5 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
# Конфигурация
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