mysql-backup-bash-script/mysql-backup-1.0.sh

56 lines
1.9 KiB
Bash
Raw Normal View History

2023-07-11 18:01:24 +00:00
#!/bin/bash
##########################################################################
# .--.
# |o_o |
# |:_/ |
# // \ \
# (| | )
# /'\_ _/`\
# \___)=(___/
#
# (c) Patrick Asmus
# support@media-techport.de
# https://www.media-techport.de
##########################################################################
# Letzte Anpassung: 24.05.2023
# Version 1.0
##########################################################################
# mysql-backup-1.0.sh
##########################################################################
# 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