Website-Suche

Wie man inkrementelle Backups mit rsync und cron plant


Backups sind wie Versicherungen; man braucht sie nicht jeden Tag, aber wenn eine Katastrophe eintritt, wie zum Beispiel versehentliches Löschen von Dateien, ein Festplattendefekt oder ein Ransomware-Angriff, kann es alles zerstören, wenn man nicht vorbereitet ist. Hier kommt kluge Backup-Planung ins Spiel.

In diesem Leitfaden zeige ich Ihnen, wie man inkrementelle Backups mit rsync und cron plant. Ich erkläre, was inkrementelle Backups sind, wie rsync im Hintergrund funktioniert und wie man den gesamten Prozess mit cron automatisiert.

Was ist ein inkrementelles Backup?

Ein inkrementelles Backup bedeutet, dass Sie nur die Dateien sichern, die seit dem letzten Backup geändert wurden. Anstatt also jedes Mal alles zu kopieren, was langsam sein und viel Speicherplatz beanspruchen kann, speichern Sie nur die neuen oder aktualisierten Dateien.

Angenommen, Sie haben 10.000 Dateien in einem Ordner und nur 20 davon haben sich heute geändert. Ein inkrementelles Backup überspringt die 9.980 unveränderten Dateien und sichert nur die 20, die sich tatsächlich geändert haben, was effizient ist und sich perfekt für tägliche Backups eignet.

Warum rsync verwenden?

rsync ist ein leistungsfähiges und zuverlässiges Werkzeug, das zum Kopieren von Dateien und Verzeichnissen unter Linux verwendet wird. Was rsync besonders macht, ist seine Fähigkeit, nur die Unterschiede zwischen der Quelle und dem Ziel zu synchronisieren.

Es funktioniert lokal (von einem Ordner zum anderen auf demselben System) oder remote (über SSH zu einem anderen Server). Es bewahrt auch Dateiberechtigungen, Zeitstempel, symbolische Links und unterstützt sogar das Löschen von entfernten Dateien, was schnell, flexibel ist und bereits auf den meisten Linux-Distributionen installiert ist.

Wenn rsync nicht installiert ist, können Sie es folgendermaßen erhalten:

sudo apt install rsync       # Debian/Ubuntu
sudo yum install rsync       # CentOS/RHEL

Unser Backup-Plan

Angenommen, Sie haben einige wichtige Dateien unter /home/ravi/documents/ gespeichert und möchten diese nach /backup/documents/ sichern. Wir werden ein einfaches Shell-Skript schreiben, das rsync verwendet, um geänderte Dateien in das Backup-Verzeichnis zu kopieren. Dann werden wir cron verwenden, um dieses Skript jeden Tag um 2:00 Uhr morgens auszuführen.

Schritt 1: Das Backup-Skript schreiben

Erstens, lasst uns ein Shell-Skript erstellen, um das Backup durchzuführen.

sudo nano /usr/local/bin/rsync-backup.sh

Fügen Sie das folgende Skript darin ein:

#!/bin/bash

SOURCE="/home/ravi/documents/"
DEST="/backup/documents/"
LOGFILE="/var/log/rsync-backup.log"
DATE=$(date +"%Y-%m-%d %H:%M:%S")

rsync -av --delete "$SOURCE" "$DEST" >> "$LOGFILE" 2>&1
echo "Backup completed at $DATE" >> "$LOGFILE"

Dieses Skript sagt rsync, die Dateien vom Quellverzeichnis zum Zielverzeichnis zu synchronisieren. Die -a-Option weist es an, im Archivmodus zu laufen und Berechtigungen sowie Metadaten zu erhalten.

Das -v macht die Ausgabe ausführlich (damit wir protokollieren können, was passiert), und --delete entfernt Dateien aus der Sicherung, wenn sie im Quellverzeichnis nicht mehr existieren. Alle Ausgaben werden in eine Protokolldatei unter /var/log/rsync-backup.log geschrieben, damit wir später prüfen können, ob etwas schiefgelaufen ist.

Mache nun das Skript ausführbar:

sudo chmod +x /usr/local/bin/rsync-backup.sh

Schritt 2: Planen Sie das Skript mit Cron

Als Nächstes müssen wir sicherstellen, dass das Backup-Skript jeden Tag um 2:00 Uhr morgens automatisch ausgeführt wird, daher müssen Sie Ihre Cron-Jobs bearbeiten, tippen Sie:

crontab -e

Fügen Sie diese Zeile am Ende hinzu:

0 2 * * * /usr/local/bin/rsync-backup.sh

Um zu bestätigen, dass Ihr Cron-Job hinzugefügt wurde:

crontab -l

Schritt 3: Testen Sie die Backup-Einrichtung

Bevor Sie das System Backups automatisch ausführen lassen, ist es wichtig, das Skript manuell zu testen, um sicherzustellen, dass alles wie erwartet funktioniert, was Ihnen hilft, mögliche Pfadprobleme, Berechtigungsfehler oder Tippfehler zu erkennen, bevor cron es still im Hintergrund ausführt.

Führen Sie zunächst das Backup-Skript manuell aus, wodurch der Backup-Prozess sofort ausgelöst wird, und Sie werden eine Liste von Dateien sehen, die kopiert oder übersprungen werden.

sudo /usr/local/bin/rsync-backup.sh

Sobald das Skript beendet ist, gehen Sie zu Ihrem Backup-Verzeichnis und überprüfen Sie, ob die Dateien korrekt kopiert wurden:

ls -lh /backup/documents/

Überprüfen Sie nun die Protokolldatei, um sicherzustellen, dass das Skript ohne Fehler ausgeführt wurde und die Sicherungszeit protokolliert hat:

cat /var/log/rsync-backup.log

Sie sollten eine Ausgabe ähnlich wie diese sehen:

sending incremental file list
./
file1.txt
folder2/
folder2/file2.pdf

Backup completed at 2025-06-16 14:00:01

Dies bestätigt, dass das Skript nicht nur Dateien kopiert, sondern auch das Ereignis mit einem Zeitstempel aufgezeichnet hat.

Schritt 4: Tägliche Snapshot-Backups erstellen

Wenn Sie einen Schritt weiter gehen und tägliche Momentaufnahmen Ihrer Daten speichern möchten (anstatt nur einen Sicherungsordner), können Sie die Option --link-dest in rsync verwenden, mit der Sie hard-verknüpfte Backups erstellen können, die im Grunde neue Ordner erzeugen, die wie vollständige Backups aussehen, aber nur für die Dateien Speicherplatz verwenden, die sich geändert haben.

Am ersten Tag erstellen Sie die anfängliche vollständige Sicherung:

rsync -a /home/ravi/documents/ /backup/daily.0/

Am nächsten Tag verwenden Sie den Ordner des vorherigen Tages als Referenz, um eine inkrementelle Sicherung zu erstellen:

rsync -a --link-dest=/backup/daily.0/ /home/ravi/documents/ /backup/daily.1/

Dateien, die sich nicht geändert haben, werden hart verlinkt, um Platz zu sparen. Sie können diese Ordner sogar mit einem einfachen Skript rotieren lassen, das die alten umbenennt und jeden Tag einen neuen Schnappschuss erstellt.

Hier ist ein grundlegendes Rotationsskript für 7 Tage:

#!/bin/bash

rm -rf /backup/daily.7
mv /backup/daily.6 /backup/daily.7
mv /backup/daily.5 /backup/daily.6
mv /backup/daily.4 /backup/daily.5
mv /backup/daily.3 /backup/daily.4
mv /backup/daily.2 /backup/daily.3
mv /backup/daily.1 /backup/daily.2
mv /backup/daily.0 /backup/daily.1

rsync -a --delete --link-dest=/backup/daily.1 /home/ravi/documents/ /backup/daily.0/

Sie können dieses Skript mit cron planen, genau wie das grundlegende Backup-Skript. Zum Beispiel, um es jeden Tag um 2:00 Uhr morgens auszuführen:

0 2 * * * /usr/local/bin/daily-rsync-rotate.sh

Bonus-Tipp: Auf einen entfernten Server sichern

Wenn Sie Ihre Daten auf eine andere Maschine (wie einen Backup-Server) sichern möchten, können Sie rsync über SSH verwenden, aber stellen Sie sicher, dass SSH-Schlüssel für die passwortlose Anmeldung eingerichtet sind, und führen Sie dann etwas wie Folgendes aus:

rsync -av -e ssh /home/ravi/documents/ ravi@backup-server:/backup/ravi/

Sie können den obigen Befehl zu Ihrem Skript hinzufügen oder ein separates Skript nur für Remote-Backups erstellen.

Schlussgedanken

Backups mögen vielleicht nicht spannend erscheinen, aber das Verlieren Ihrer Daten ist es sicher. Sobald Sie inkrementelle Backups mit rsync und cron eingerichtet haben, können Sie sich entspannen, da Sie wissen, dass Ihre Dateien jeden Tag geschützt sind.

Teste immer deine Backups, stelle sicher, dass deine Skripte funktionieren, und vergiss nicht, von Zeit zu Zeit die Protokolle zu überprüfen. Falls du jemals etwas wiederherstellen musst, wirst du froh sein, dass du dieses System eingerichtet hattest.