mysql-backup-bash-script/mysql-backup.v1.sh
2023-07-14 23:31:35 +00:00

49 lines
1.7 KiB
Bash

#!/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