gitea backup script
This commit is contained in:
parent
7f51f2892e
commit
399bc57977
76
gitea-backup.sh
Normal file
76
gitea-backup.sh
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user