From 227f1a694694beda6f515679677308f51e0cbd64 Mon Sep 17 00:00:00 2001 From: Jakub Date: Mon, 7 Jul 2025 12:44:46 +0000 Subject: [PATCH] first commit --- backup_gitea.sh | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ send_mail.py | 27 ++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100755 backup_gitea.sh create mode 100644 send_mail.py diff --git a/backup_gitea.sh b/backup_gitea.sh new file mode 100755 index 0000000..2ae5470 --- /dev/null +++ b/backup_gitea.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +CONTAINER_NAME="gitea" +CONF_PATH="/data/gitea/conf" +REPO_PATH="/data/gitea/data/git/repositories" +TMP_BACKUP_DIR="/tmp/gitea_backup" +CONF_TMP_DIR="${TMP_BACKUP_DIR}/conf" +REPO_TMP_DIR="${TMP_BACKUP_DIR}/repositories" +BACKUP_DIR="$HOME/backup/gitea" +DATE=$(date +"%Y-%m-%d_%H-%M-%S") +BACKUP_FILE="${BACKUP_DIR}/gitea_backup_${DATE}.tar.gz" +LOG_FILE="${BACKUP_DIR}/backup_log_${DATE}.txt" +EMAIL="test@email.com" + + +mkdir -p "$BACKUP_DIR" +mkdir -p "$CONF_TMP_DIR" +mkdir -p "$REPO_TMP_DIR" + +{ + echo "Backup rozpoczęty: $(date)" + + if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then + echo "Błąd: kontener $CONTAINER_NAME nie działa lub nie istnieje" + exit 1 + fi + + rm -rf "${TMP_BACKUP_DIR:?}/*" + + echo "Kopiowanie konfiguracji..." + docker cp "${CONTAINER_NAME}:${CONF_PATH}/app.ini" "$CONF_TMP_DIR/app.ini" + if [[ $? -ne 0 ]]; then + echo "Błąd podczas kopiowania konfiguracji" + exit 1 + fi + + echo "Kopiowanie repozytoriów..." + docker cp "${CONTAINER_NAME}:${REPO_PATH}" "$REPO_TMP_DIR" + if [[ $? -ne 0 ]]; then + echo "Błąd podczas kopiowania repozytoriów" + exit 1 + fi + + tar -czf "$BACKUP_FILE" -C "$TMP_BACKUP_DIR" . + + if [[ $? -ne 0 ]]; then + echo "Błąd podczas tworzenia archiwum" + exit 1 + fi + + echo "Backup zakończony sukcesem: $(date)" + rm -rf "$TMP_BACKUP_DIR" + +} > "$LOG_FILE" 2>&1 + + +if grep -q "Błąd" "$LOG_FILE"; then + mail_subject="Backup Gitea NIE powiódł się: $DATE" +else + mail_subject="Backup Gitea zakończony sukcesem: $DATE" +fi + +mail_body=$(cat "$LOG_FILE") + +python3 ./send_mail.py "$mail_subject" "$mail_body" $EMAIL diff --git a/send_mail.py b/send_mail.py new file mode 100644 index 0000000..2d859b4 --- /dev/null +++ b/send_mail.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +import smtplib +from email.message import EmailMessage +import sys + +def send_mail(subject, body, to_email): + msg = EmailMessage() + msg.set_content(body) + msg['Subject'] = subject + msg['From'] = GMAIL_USER + msg['To'] = to_email + + with smtplib.SMTP('mail.com', 587) as server: + server.starttls() + server.login(GMAIL_USER, GMAIL_PASS) + server.send_message(msg) + +if __name__ == "__main__": + GMAIL_USER = "email@test.com" + GMAIL_PASS = "passwd" + + subject = sys.argv[1] + body = sys.argv[2] + to_email = sys.argv[3] + + send_mail(subject, body, to_email) +