#!/bin/bash # Script Name: mysql-backup.v1.sh # Beschreibung: Sichert MySQL Datenbanken weg # Aufruf: bash ./mysql-backup.v1.sh # Autor: Patrick Asmus # Web: https://www.media-techport.de # Git-Reposit.: https://git.media-techport.de/scriptos/mysql-backup-bash-script # Version: 1.0.1 # Datum: 15.07.2023 # Modifikation: Header angepasst ##################################################### # MySQL-Server Informationen DB_HOST="mysql-host" # Hostname oder IP-Adresse des MySQL-Servers DB_USER="mysqlbackup" # MySQL-Benutzername DB_PASS="passwd" # MySQL-Passwort DB_NAME="db" # Name der zu sichernden Datenbank # Backup-Verzeichnis BACKUP_DIR="/home/backup/mysql" MAX_BACKUPS=5 # Erstelle das Backup-Verzeichnis, wenn es nicht vorhanden ist mkdir -p "$BACKUP_DIR" # Erstelle den Dateinamen für das aktuelle Backup CURRENT_DATE=$(date +"%Y-%m-%d_%H-%M-%S") BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$CURRENT_DATE.sql" # Erstelle den MySQL-Dump mysqldump --column-statistics=0 -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_FILE" # Überprüfe, ob das Backup erfolgreich erstellt wurde if [ $? -eq 0 ]; then echo "Das Backup wurde erfolgreich erstellt: $BACKUP_FILE" else echo "Fehler beim Erstellen des Backups." exit 1 fi # Lösche ältere Backups, wenn die Anzahl der Backups die Maximalanzahl überschreitet BACKUP_COUNT=$(ls -1 "$BACKUP_DIR/$DB_NAME-"*.sql | wc -l) if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then DELETE_COUNT=$((BACKUP_COUNT - MAX_BACKUPS)) OLDEST_BACKUPS=$(ls -1t "$BACKUP_DIR/$DB_NAME-"*.sql | tail -n $DELETE_COUNT) echo "Lösche ältere Backups: $OLDEST_BACKUPS" rm $OLDEST_BACKUPS fi