diff --git a/README.md b/README.md index 5cf4790..a5be7ef 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ -# backupscript-collection +# Mein Repository für Backup-Skripte -Eine kleine Sammlung an verschiedenen Backup-Scripten \ No newline at end of file +Dieses Repository dient als Plattform für eine Sammlung von Backup-Skripten. Hier werden Backup-Skripte gespeichert, versioniert und bearbeitet. + +## Beschreibung + +Dieses Repository enthält eine Sammlung von Backup-Skripten, die für verschiedene Zwecke und Systeme entwickelt wurden. Es bietet eine zentrale Plattform zur Verwaltung dieser Skripte. + +## Verwendung + +1. **Klonen des Repositorys:** Um die Backup-Skripte herunterzuladen und zu verwenden, führe den folgenden Befehl aus: + + ```bash + git clone https://git.media-techport.de/scriptos/backup-script-collection.git + ``` \ No newline at end of file diff --git a/mariadb-backup.v1.sh b/mariadb-backup.v1.sh new file mode 100644 index 0000000..e066649 --- /dev/null +++ b/mariadb-backup.v1.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# Script Name: MARIADB_BACKUP.V1.SH +# Beschreibung: Macht ein Backup aller MariaDB-Datenbanken in ein Verzeichnis der Wahl +# Aufruf: ./bash MARIADB_BACKUP.V1.SH +# Autor: Patrick Asmus +# Web: https://www.media-techport.de +# Git-Reposit.: https://git.media-techport.de/scriptos/backup-script-collection +# Version: 2.0 +# Datum: 03.09.2023 +# Modifikation: Neuerstellung +##################################################### + +# Variablen +SCRIPT_NAME="mariadb-backup.v1.sh" +BACKUP_DIR="/var/backup" +LOGDIR="/var/log/script-logs" +EMAIL_ADDRESS="system@media-techport.de" +HOSTNAME=$(hostname) +DB_USER="mysqlbackup" +DB_PASSWORD="PASSWORD" +BACKUP_RETENTION_DAYS=20 + +# Erstelle Log-Verzeichnis +mkdir -p $LOGDIR + +# Sichern jeder Datenbank in separater SQL-Datei +DATABASES=$(mysql -u "$DB_USER" -p"$DB_PASSWORD" -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql|sys)") +ERROR_OCCURRED=0 + +for DB in $DATABASES; do + DATE=$(date +%F) + BACKUP_FILE="$BACKUP_DIR/$DB-$DATE.sql" + echo "Sichere $DB-Datenbank in $BACKUP_FILE" | tee -a "$LOGDIR/$SCRIPT_NAME.log" + mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$DB" > "$BACKUP_FILE" + if [ $? -ne 0 ]; then + ERROR_OCCURRED=1 + echo "Fehler beim Sichern der $DB-Datenbank" | tee -a "$LOGDIR/$SCRIPT_NAME.log" + fi +done + +# Loeschen von Backups, die aelter als X Tage sind +find "$BACKUP_DIR" -type f -name "*.sql" -mtime +$BACKUP_RETENTION_DAYS -delete + +# Ueberpruefe, ob das Backup erfolgreich war oder Probleme aufgetreten sind +if [ $ERROR_OCCURRED -eq 1 ]; then + echo "Backup konnte nicht ausgefuehrt werden." | tee -a "$LOGDIR/$SCRIPT_NAME.log" + mail -s "Fehler beim Ausführen des MariaDB-Backups auf $HOSTNAME" "$EMAIL_ADDRESS" < "$LOGDIR/$SCRIPT_NAME.log" +fi +exit 0 \ No newline at end of file