Ordner Backup
Hier ist ein einfaches Bash-Skript, das ein Backup eines Ordners erstellt:
# !/bin/bash
# Zielverzeichnis für das Backup
backup_dir="/pfad/zum/zielverzeichnis"
# Quellverzeichnis, das gesichert werden soll
source_dir="/pfad/zum/quellverzeichnis"
# Name des Backup-Zip-Archivs
backup_file="backup_$(date +'%Y-%m-%d').zip"
# Archiv erstellen
zip -r "$backup_dir/$backup_file" "$source_dir"
# Erfolgsmeldung anzeigen
echo "Backup erfolgreich erstellt: $backup_dir/$backup_file"
Speichern Sie dieses Skript in einer Datei, z. B. backup.sh
, und ändern Sie die Variablen backup_dir
und source_dir
entsprechend Ihren Anforderungen. Stellen Sie sicher, dass Sie dem Skript Ausführungsrechte geben, bevor Sie es ausführen:
chmod +x backup.sh
Führen Sie das Skript dann aus:
./backup.sh
Das Skript erstellt ein ZIP-Archiv mit dem aktuellen Datum im Namen im angegebenen Zielverzeichnis, das den Inhalt des Quellverzeichnisses enthält. Anschließend wird eine Erfolgsmeldung angezeigt.
Hier ist ein Bash-Skript, das sich auf einen anderen Server verbindet, das erste Skript ausführt und das Backup herunterlädt:
#!/bin/bash
# Zielserver
remote_server="benutzer@remote_server"
# Pfad zum Zielverzeichnis auf dem Zielserver
remote_backup_dir="/pfad/zum/zielverzeichnis"
# Pfad zum ersten Bash-Skript
local_backup_script="/pfad/zum/ersten/bash/skript/backup.sh"
# Verbindung zum Zielserver herstellen und das erste Skript ausführen
ssh "$remote_server" bash -s < "$local_backup_script"
# Wartet drei Minuten, bevor das Backup herunterladen
sleep 180
# Herunterladen des erstellten Backups
scp "$remote_server:$remote_backup_dir/backup_$(date +'%Y-%m-%d').zip" /lokales/zielverzeichnis
# Erfolgsmeldung anzeigen
echo "Backup erfolgreich heruntergeladen"
Ersetzen Sie benutzer@remote_server
durch die entsprechenden Zugangsdaten zum Zielserver und passen Sie die Pfade remote_backup_dir
und local_backup_script
an Ihre Bedürfnisse an.
Speichern Sie dieses Skript in einer Datei, z. B. remote_backup.sh
, und geben Sie ihm Ausführungsrechte:
chmod +x remote_backup.sh
Führen Sie das Skript dann aus:
./remote_backup.sh
Das Skript verbindet sich mit dem Zielserver, führt das erste Bash-Skript aus, das das Backup erstellt, und lädt dann das erstellte Backup herunter.
Wenn Sie das zweite Skript automatisch ausführen möchten, ohne dass Sie jedes Mal ein Passwort eingeben müssen, können Sie SSH-Schlüsselpaare verwenden, um sich auf dem Zielserver ohne Passwort einzuloggen.
Hier ist eine kurze Anleitung, wie Sie SSH-Schlüsselpaare einrichten können:
-
Generieren Sie ein SSH-Schlüsselpaar auf Ihrem lokalen Computer, falls Sie noch keines haben:
ssh-keygen -t rsa
Dieser Befehl wird ein Schlüsselpaar in Ihrem
~/.ssh
-Verzeichnis erstellen. -
Kopieren Sie den öffentlichen Schlüssel auf den Zielserver:
ssh-copy-id benutzer@remote_server
Dadurch wird der öffentliche Schlüssel zum
~/.ssh/authorized_keys
-Datei auf dem Zielserver hinzugefügt. -
Stellen Sie sicher, dass der Zugriff ohne Passwort funktioniert, indem Sie sich auf den Zielserver verbinden:
ssh benutzer@remote_server
Sie sollten sich ohne Passworteingabe auf dem Zielserver einloggen können.
Nachdem Sie das SSH-Schlüsselpaar eingerichtet haben, sollten Sie in der Lage sein, das zweite Skript automatisch auszuführen, ohne ein Passwort eingeben zu müssen.
Hier ist ein Bash-Skript, das alle Backups bis auf die letzten drei in einem bestimmten Verzeichnis löscht:
#!/bin/bash
# Verzeichnis mit den Backups
backup_dir="/pfad/zum/backup/verzeichnis"
# Anzahl der zu behaltenden Backups
keep_backups=3
# Alle Backups auflisten und nach Datum sortieren (älteste zuerst)
backup_list=$(ls -t "$backup_dir")
# Zähler für behaltene Backups
kept_backups=0
# Schleife über die Backup-Liste
for backup_file in $backup_list; do
# Nur reguläre Dateien berücksichtigen
if [ -f "$backup_dir/$backup_file" ]; then
# Behalte die ersten "keep_backups" Backups, lösche den Rest
if [ $kept_backups -lt $keep_backups ]; then
((kept_backups++))
else
echo "Lösche Backup: $backup_file"
rm "$backup_dir/$backup_file"
fi
fi
done
echo "Behaltene Backups: $kept_backups"
Ersetzen Sie "/pfad/zum/backup/verzeichnis"
durch den tatsächlichen Pfad zu Ihrem Backup-Verzeichnis und passen Sie bei Bedarf keep_backups
an die Anzahl der zu behaltenden Backups an.
Speichern Sie dieses Skript in einer Datei, z. B. cleanup_backups.sh
, und geben Sie ihm Ausführungsrechte:
chmod +x cleanup_backups.sh
Führen Sie das Skript dann aus:
./cleanup_backups.sh
Das Skript wird alle Backups bis auf die letzten drei im angegebenen Verzeichnis löschen.
Um ein Skript automatisch nach einer bestimmten Zeit unter Ubuntu ausführen zu lassen, können Sie die cron
-Dienste verwenden. cron
ist ein Zeitplaner, der es Ihnen ermöglicht, Aufgaben zu einem bestimmten Zeitpunkt oder in regelmäßigen Abständen auszuführen.
Hier ist eine kurze Anleitung, wie Sie ein Skript mit cron
planen können:
-
Öffnen Sie die
crontab
-Datei zum Bearbeiten mit dem Befehl:crontab -e
-
Fügen Sie eine Zeile am Ende der Datei hinzu, um das Skript zu planen. Die Syntax für
cron
ist:m h dom mon dow command
Dabei stehen:
m
für die Minute (0-59)h
für die Stunde (0-23)dom
für den Tag des Monats (1-31)mon
für den Monat (1-12)dow
für den Wochentag (0-7, wobei 0 und 7 für Sonntag stehen)command
für den Befehl oder das Skript, das ausgeführt werden soll
Zum Beispiel, um ein Skript jeden Tag um 3 Uhr morgens auszuführen, fügen Sie folgende Zeile hinzu:
0 3 * * * /pfad/zum/skript.sh
-
Speichern und schließen Sie die
crontab
-Datei. Beachten Sie, dasscron
den Standardtexteditor verwendet, der normalerweisenano
ist.
Nachdem Sie das Skript zur crontab
hinzugefügt haben, wird es automatisch gemäß dem geplanten Zeitplan ausgeführt. Sie können cron
verwenden, um Skripte zu planen, die täglich, wöchentlich, monatlich oder sogar minutengenau ausgeführt werden sollen.