From e928093119d6eb92666f07e89c74a2a150f39517 Mon Sep 17 00:00:00 2001 From: MrUnknownDE Date: Sat, 6 Jul 2024 11:15:21 +0200 Subject: [PATCH] add rclone_backup --- sh_scripts/cifs_backup.sh | 50 ------------------------- sh_scripts/rclone_backup.sh | 73 +++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 50 deletions(-) delete mode 100644 sh_scripts/cifs_backup.sh create mode 100644 sh_scripts/rclone_backup.sh diff --git a/sh_scripts/cifs_backup.sh b/sh_scripts/cifs_backup.sh deleted file mode 100644 index e79abd3..0000000 --- a/sh_scripts/cifs_backup.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -# Konfiguration -CIFS_SHARE="//server/share" -MOUNT_POINT="/mnt/backup" -USERNAME="username" -PASSWORD="password" -BACKUP_SOURCE="/opt" -BACKUP_DEST="$MOUNT_POINT/backup_$(date +%Y%m%d_%H%M%S).tar.gz" -TELEGRAM_BOT_TOKEN="your_bot_token" -TELEGRAM_CHAT_ID="your_chat_id" - -# Hostname und Zeitstempel -HOSTNAME=$(hostname) -TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") - -# Funktion zum Senden der Telegram-Benachrichtigung -send_telegram_message() { - 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" -} - -# Mount CIFS Share -if mount -t cifs -o username=$USERNAME,password=$PASSWORD $CIFS_SHARE $MOUNT_POINT; then - echo "CIFS Share erfolgreich gemountet." - send_telegram_message "[$TIMESTAMP] [$HOSTNAME] CIFS Share erfolgreich gemountet." - - # Backup erstellen - if tar -czf $BACKUP_DEST $BACKUP_SOURCE; then - echo "Backup erfolgreich erstellt: $BACKUP_DEST" - send_telegram_message "[$TIMESTAMP] [$HOSTNAME] Backup erfolgreich erstellt: $BACKUP_DEST" - else - echo "Fehler beim Erstellen des Backups." - send_telegram_message "[$TIMESTAMP] [$HOSTNAME] Fehler beim Erstellen des Backups." - fi - - # Unmount CIFS Share - if umount $MOUNT_POINT; then - echo "CIFS Share erfolgreich entmountet." - send_telegram_message "[$TIMESTAMP] [$HOSTNAME] CIFS Share erfolgreich entmountet." - else - echo "Fehler beim Entmounten des CIFS Share." - send_telegram_message "[$TIMESTAMP] [$HOSTNAME] Fehler beim Entmounten des CIFS Share." - fi -else - echo "Fehler beim Mounten des CIFS Share." - send_telegram_message "[$TIMESTAMP] [$HOSTNAME] Fehler beim Mounten des CIFS Share." -fi diff --git a/sh_scripts/rclone_backup.sh b/sh_scripts/rclone_backup.sh new file mode 100644 index 0000000..23b4a6b --- /dev/null +++ b/sh_scripts/rclone_backup.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# Quell- und Zielverzeichnis +BACKUP_SOURCE="/opt" +BACKUP_DEST="/data/backup" +ziel_verzeichnis="/" + +# Rclone-Konfigurationsname +rclone_konfig="web-opt-backup" + +# Telegram Bot Token und Chat ID +telegram_bot_token="YOUR_TELEGRAM_BOT_TOKEN" +telegram_chat_id="YOUR_CHAT_ID" + +# Funktion, um eine Nachricht an Telegram zu senden +send_telegram_message() { + 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" +} + +# Überprüfung, ob das Script mit dem Argument "telegram-test" aufgerufen wurde +if [ "$1" == "telegram-test" ]; then + echo "Send Textnachricht an Telegram..." + send_telegram_message "Test-Nachricht%0AServer: mail.johanneskr.de%0ATime: $timestamp%0AApplication: Script-Debbuging" + echo "Testnachricht wurde versendet..." + exit 0 +fi + +# Vorhandene backup.log-Datei löschen +log_datei="backup.log" +if [ -f "$log_datei" ]; then + echo "Lösche vorhandene backup.log-Datei..." + rm "$log_datei" +fi + +# Backup durchführen +if tar -czf $BACKUP_DEST $BACKUP_SOURCE; then + echo "Backup erfolgreich erstellt: $BACKUP_DEST" + send_telegram_message "[$TIMESTAMP] [$HOSTNAME] Backup erfolgreich erstellt: $BACKUP_DEST" + else + echo "Fehler beim Erstellen des Backups." + send_telegram_message "[$TIMESTAMP] [$HOSTNAME] Fehler beim Erstellen des Backups." +fi + +# Überprüfen, ob das Mailcow Backup erfolgreich war +if [ $? -eq 0 ]; then + send_telegram_message "Erfolg!%0AServer: web.johanneskr.de%0ATime: $(date +"%Y-%m-%d %H:%M:%S")%0AApplication: Mailcow-Backup" + echo "Mailcow Backup erfolgreich." +else + echo "Fehler beim Mailcow Backup." + error_message=$(tail -n 20 backup.log) + send_telegram_message "Fehlgeschlagen!%0AServer: web.johanneskr.de%0ATime: $(date +"%Y-%m-%d %H:%M:%S")%0AApplication: Mailcow-Backup%0AError: $error_message" + echo "Fehler beim Mailcow Backup. Logs wurden gesendet." + exit 0 +fi + +# Rclone-Befehl zum Kopieren des Verzeichnisses +echo "Die Daten werden jetzt auf den S3 Speicher hochgeladen" +sleep "5" +rclone copy "$quelle_verzeichnis" "$rclone_konfig":"$ziel_verzeichnis" + +# Überprüfen, ob der Upload erfolgreich war +if [ $? -eq 0 ]; then + echo "Backup erfolgreich auf S3 hochgeladen." + # Telegram-Benachrichtigung senden + send_telegram_message "Erfolg!%0AServer: web.johanneskr.de%0ATime: $(date +"%Y-%m-%d %H:%M:%S")%0AApplication: S3-Mailcow-Backup-Upload" +else + echo "Fehler beim Hochladen des Backups auf S3." + # Telegram-Benachrichtigung senden + send_telegram_message "Fehlgeschlagen!%0AServer: web.johanneskr.de%0ATime: $(date +"%Y-%m-%d %H:%M:%S")%0AApplication: S3-Mailcow-Backup-Upload" + exit 0 +fi + +echo "Backup-Prozess abgeschlossen." \ No newline at end of file