Gespeichert von Joachim am

Level 4: Wie ein Skript meinen Server killte (Und warum du Backups brauchst)

Geschrieben von Joachim

Methode A: Das Bash-Skript

Wenn du kein Drupal-spezifisches Tool nutzen willst, ist ein Bash-Skript der Standard. Es exportiert deine Datenbank, komprimiert sie und legt sie sicher ab. Hier ist das Skript, das ich mir damals gewünscht hätte:

#!/bin/bash

# --- KONFIGURATION (hier deine Daten eintragen) ---
DB_USER="dein_benutzername"
DB_PASSWORD="dein_passwort"
DB_NAME="name_der_datenbank"
BACKUP_DIR="/var/backups/mysql"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")

# --- START DER SICHERUNG ---

# 1. Backup-Verzeichnis anlegen, falls es fehlt
mkdir -p $BACKUP_DIR

# 2. Datenbank exportieren
mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql

# 3. Datei komprimieren
gzip $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql

# 4. Optional: alte Backups aufräumen (Vorsicht bei der Aktivierung!)
# find $BACKUP_DIR -type f -name "*.gz" -mtime +7 -exec rm {} \;

echo "Backup erfolgreich: $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql.gz"

Der Automatismus: Cronjob

Ein Skript bringt nichts, wenn du vergisst, es auszuführen. Öffne deine Crontab mit crontab -e und füge diese Zeile ein:

0 3 * * * /pfad/zu/deinem/backup_script.sh

Das bedeutet: jeden Tag um 03:00 Uhr morgens, während du schläfst, werden deine Daten gesichert.

Methode B: Der Drush-Weg

Als Drupal-Nutzer hast du ein Werkzeug, das anderen fehlt: Drush. Es kennt deine Datenbank-Zugangsdaten bereits aus der settings.php – du musst keine Passwörter in Skripte schreiben. Der Befehl für ein sofortiges, gezipptes Backup:

drush sql:dump --gzip --result-file=auto --extra-dump=--no-tablespaces

 

Der Restore: So holst du deine Seite zurück

Stell dir vor, wie ich damals, hast du versehentlich den Server gelöscht. Aber diesmal hast du eine Datei namens db-2025-05-18.sql.gz. Dieser Befehl stellt sie wieder her:

zcat db-2025-05-18.sql.gz | mysql -u dein_user -p name_der_datenbank

 

zcat entpackt dein Backup, die Pipe (|) schiebt die Daten direkt in den mysql-Befehl, und deine Datenbank ist wiederhergestellt.

Fazit: Lerne aus meinem Fehler von 2013. Technik kann versagen, Skripte können fehlerhaft sein, du kannst dich vertippen. Aber mit einem automatischen Backup ist das kein Totalverlust, sondern ein kurzer Rücksetzer.