Website-Suche

Wie man Linux-Backups mit einem Bash-Skript automatisiert


Auf einem Linux-System ist es entscheidend, regelmäßig Backups zu erstellen, um Ihre Daten zu schützen, sicher zu halten und die Wiederherstellung zu erleichtern, falls etwas schiefgeht. Egal, ob Sie persönliche Dateien verwalten, eine Entwicklungsumgebung betreiben oder Server verwalten, Sie benötigen einen soliden Backup-Plan.

Eine der einfachsten und flexibelsten Möglichkeiten, Backups zu verwalten, besteht darin, ein benutzerdefiniertes Skript zu schreiben, mit dem Sie genau entscheiden können, was gesichert wird, wann und wo es gespeichert wird. Es spart auch Zeit und verringert das Risiko, Daten zu verlieren.

In diesem Leitfaden lernen Sie, wie Sie ein einfaches Shell-Skript erstellen, das automatisch wichtige Dateien sichert.

Warum ein Backup-Skript verwenden?

Die Verwendung eines Backup-Skripts in Linux gibt Systemadministratoren mehr Kontrolle und Flexibilität beim Schutz wichtiger Daten.

Hier ist der Grund, warum es eine kluge Entscheidung ist:

  • Automatisierte Backups: Sie können das Skript so einplanen, dass es automatisch läuft, indem Sie Tools wie Cron verwenden, sodass Sie nicht daran denken müssen, die Daten manuell zu sichern.
  • Volle Kontrolle: Sie entscheiden, was gesichert wird, wohin es geht und wie oft. Ob es tägliche Kopien von /etc, wöchentliche Snapshots der Home-Verzeichnisse oder nur ausgewählte Verzeichnisse sind.

Erstellen eines Backup-Skripts für wichtige Dateien

Öffnen Sie Ihr Terminal und navigieren Sie zu dem Verzeichnis, in dem Sie das Skript speichern möchten (z. B. Ihr Heimatverzeichnis oder /usr/local/bin/ für systemweiten Zugriff).

Erstellen Sie die Skriptdatei mit einem Texteditor wie nano oder vim:

nano backup_script.sh

Unten ist ein einfaches Skript, das Dateien in ein angegebenes Verzeichnis sichert.

#!/bin/bash

Define source and destination directories
SOURCE_DIR="/home/user/Documents"     # Source directory to back up
BACKUP_DIR="/home/user/backups"       # Destination directory for backups

Create a timestamp for the backup folder
TIMESTAMP=$(date +'%Y%m%d%H%M%S')

Create a new backup folder with the timestamp
BACKUP_FOLDER="$BACKUP_DIR/backup_$TIMESTAMP"
mkdir -p "$BACKUP_FOLDER"

Copy files to the backup folder
cp -r "$SOURCE_DIR"/* "$BACKUP_FOLDER"

Log the completion of the backup
echo "Backup completed at $TIMESTAMP" >> "$BACKUP_DIR/backup_log.txt"

Optional: Remove backups older than 30 days
find "$BACKUP_DIR" -type d -name "backup_*" -mtime +30 -exec rm -rf {} \;

Erklärung des Skripts:

  • SOURCE_DIR: Das Verzeichnis, das die Dateien enthält, die Sie sichern möchten (z. B. /home/user/Documents).
  • BACKUP_DIR: Das Verzeichnis, in dem Backups gespeichert werden (z. B. /home/user/backups).
  • TIMESTAMP: Eine Variable, die das aktuelle Datum und die Uhrzeit speichert, um jeden Sicherungsordner eindeutig zu identifizieren.
  • mkdir -p: Erstellt den Sicherungsordner mit dem Zeitstempel.
  • cp -r: Kopiert alle Dateien und Unterverzeichnisse vom Quellverzeichnis in den Sicherungsordner.
  • Der echo-Befehl protokolliert den Abschluss des Backups und fügt dem Protokoll eine Zeitstempel hinzu.
  • Der Befehl find entfernt Backups, die älter als 30 Tage sind, und verhindert, dass sich Ihr Backup-Verzeichnis mit alten Dateien füllt.

Speichern und schließen Sie das Skript (in nano drücken Sie CTRL + X, dann Y zur Bestätigung und drücken Enter).

Jetzt, wo das Skript geschrieben ist, müssen Sie es ausführbar machen.

chmod +x backup_script.sh

Sie können das Skript jetzt manuell ausführen, indem Sie Folgendes ausführen:

./backup_script.sh

Wenn alles richtig eingerichtet ist, sollte es ein Backup Ihrer Dateien im angegebenen Sicherungsverzeichnis erstellen.

Den Backup-Skript mit Cron planen

Um den Backup-Prozess zu automatisieren, können Sie das Skript so planen, dass es in bestimmten Intervallen mithilfe von cron, dem Linux-Job-Planer, ausgeführt wird.

Öffnen Sie die Cron-Konfigurationsdatei, indem Sie Folgendes eingeben:

crontab -e

Fügen Sie einen Cron-Job hinzu, um das Skript zu einem bestimmten Zeitpunkt auszuführen. Zum Beispiel, um das Sicherungsskript jeden Tag um 2 Uhr morgens auszuführen, fügen Sie die folgende Zeile in die Cron-Datei ein:

0 2 * * * /path/to/backup_script.sh

Das Skript wird nun automatisch zur angegebenen Zeit ausgeführt.

Um das Backup zu bestätigen, können Sie das Backup-Verzeichnis überprüfen, um zu verifizieren, dass Backups wie erwartet erstellt werden, oder Sie können auch die Cron-Protokolle prüfen, um zu bestätigen, dass das Backup-Skript zur geplanten Zeit ausgeführt wird.

grep CRON /var/log/syslog

Kompression mit tar und gzip hinzufügen

Anstatt Dateien direkt zu kopieren, können Sie das gesamte Backup in ein .tar.gz-Archiv komprimieren, was Platz spart und die Dinge ordentlich hält.

Modifiziertes Skript mit Kompression:

#!/bin/bash

Define source and destination directories
SOURCE_DIR="/home/user/Documents"
BACKUP_DIR="/home/user/backups"

Create a timestamp
TIMESTAMP=$(date +'%Y%m%d%H%M%S')

Define the backup filename
BACKUP_FILE="$BACKUP_DIR/backup_$TIMESTAMP.tar.gz"

Create the backup directory if it doesn't exist
mkdir -p "$BACKUP_DIR"

Create a compressed archive of the source directory
tar -czf "$BACKUP_FILE" -C "$SOURCE_DIR" .

Log the backup completion
echo "Compressed backup created at $TIMESTAMP" >> "$BACKUP_DIR/backup_log.txt"

Optional: Delete old backups (over 30 days)
find "$BACKUP_DIR" -type f -name "backup_*.tar.gz" -mtime +30 -exec rm -f {} \;

Sende Backup an einen entfernten Server mit scp

Wenn Sie Ihre Backups auf einem entfernten Server (wie einem Backup-VPS oder NAS) speichern möchten, können Sie das Archiv mit dem scp-Befehl hochladen.

Fügen Sie Folgendes am Ende des Skripts hinzu:

# Define remote server info
REMOTE_USER="your_user"
REMOTE_HOST="your-server-ip"
REMOTE_DIR="/remote/backup/location"

Send the backup file to the remote server
scp "$BACKUP_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"

Richten Sie die SSH-Schlüssel-Authentifizierung zwischen Ihrer lokalen Maschine und dem entfernten Server ein, um das manuelle Eingeben von Passwörtern zu vermeiden.

Fazit

Ein Backup-Skript in Linux zu erstellen, ist eine einfache und praktische Möglichkeit, Ihre Daten vor versehentlichem Verlust zu schützen. Durch die Planung des Skripts mit cron können Sie den Backup-Prozess automatisieren, sodass Ihre wichtigen Dateien regelmäßig gesichert werden, ohne dass Sie dies manuell tun müssen.