From 399bc57977328008803c2ad5e1db1ef04c59ef55 Mon Sep 17 00:00:00 2001 From: skeris Date: Fri, 2 May 2025 16:49:34 +0300 Subject: [PATCH] gitea backup script --- gitea-backup.sh | 76 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 gitea-backup.sh diff --git a/gitea-backup.sh b/gitea-backup.sh new file mode 100644 index 0000000..ca543d3 --- /dev/null +++ b/gitea-backup.sh @@ -0,0 +1,76 @@ +#!/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