Wie kann ich mit Rsync ein Skript für eine Remote-Sicherung erstellen?

Procédure

Wozu dient Rsync?

Mit Rsync können Sie Dateien über die Befehlszeile synchronisieren, sodass Sie Dateien von einem Ort zum anderen sichern können, indem Sie sie quellenspezifisch synchronisieren.

Mit dem folgenden Skript können Sie eine vollständige Sicherung pro Monat und eine partielle Sicherung einmal pro Woche durchführen.

Wie erstelle ich ein Skript für eine Remote-Sicherung mit Rsync?

Das folgende Skript ermöglicht es Ihnen, ein Remote-Backup-Skript mit Rysnc einzurichten. Das Skript wird das Vorhandensein des Quellordners testen, die Erreichbarkeit des Servers prüfen und jeden Monat einen neuen Ordner erstellen, in den es eine Vollsicherung einfügt.

#!/bin/sh Monat=`Datum +%B` Tag=`Datum +%d-%m-%Y` Stunde=`Datum +%T` log="/home/user/logs_Sicherungen" local="/user/ordner" distant="/files/sicherungen_$Monat/" hostssh="ip_server" userssh="Kennung" Zähler=5 retention=`Datum +%B --date='1 month ago'` nom() { echo "-------------------------------------------------------------"" > $log/sicherung_$tag.log echo -e "Sicherung von $local von $(Datum +%d-%B-%Y)" >> $log/sicherung_$tag.log echo "-------------------------------------------------------------" >> $log/sicherung_$tag.log }# Wenn das Verzeichnis mit den Logs nicht existiert, wird dieses erstellt.if [! -d $log ];then mkdir $log fi# Wir testen, ob das Quellverzeichnis vorhanden ist UND ob der Server auf den Pingrecus=$(ping -c $counter $hostssh | grep 'received' | awk -F',' '{ print $2 }' | awk '{print $1 }') reagiert. > /dev/null 2>&1 if [[ ! -d $local ]] && [[ $recus -eq 0 ]];then
nom
echo -e "$jour-$heure :\n" >> $log/sauvegarde_$jour.log
echo -e "$local n'existe plus ou est inaccessible.\n\nServeur inaccessible ($hostssh : $compteur paquets transmis, $recus paquets reçus).\n\nAucune
sauvegarde effectuée." >> $log/sicherung_$tag.log exit# Wir testen nur, ob der Quellordner vorhandenist elif [ ! -d $local ];then nom echo -e "$Tag-$Stunde: $local existiert nicht mehr oder ist unzugänglich.nnKeine Sicherung durchgeführt." >> $log/sicherung_$tag.log exit# Wir testen nur den Ping des Serverselif [ $recus -eq 0 ];then name echo -e "$Tag-$Stunde: Server nicht erreichbar ($hostssh: $zählt gesendete Pakete, $recus empfangene Pakete).\n'n't backup done." >> $log/Sicherung_$Tag.log exit fi echo "-------------------------------------------------------------". > $log/sicherung_$tag.log echo "Backup von $local von $(Datum +%d-%B-%Y)" >> $log/sicherung_$tag.log echo "-------------------------------------------------------------". >> $log/sicherungskopie_$tag.log # Startzeit der Übertragung im Protokoll echo "Startzeit der Sicherung: $(Datum +%T)" >> $log/sicherungskopie_$tag.log echo "-------------------------------------------------------------"" >> $log/sicherung_$tag.log# Dateiübertragungrsync -avz --stats --protect-args --delete-after -e ssh $local $userssh@$hostssh:$distant >> $log/sicherung_$tag.log # -a: Archivierungsmodus ( entspricht -rlptgoD ). # -z: Datenkomprimierung während der Übertragung.
# -e: um die Verwendung von ssh anzugeben # -- stats: gibt Informationen über die Übertragung (Anzahl der Dateien...) # --protect -args: Wenn Sie einen Dateinamen übertragen müssen, der Leerzeichen enthält , können Sie dies mit dieser Option angeben. # --delete-after: löscht Dateien, die nicht mehr in der Quelle existieren, nachdem sie in den Zielordner übertragen wurden.
status=$? echo "" >> $log/Sicherung_$Tag.log# rsync return codescase $status in 0) echo Erfolg >> $log/Sicherung_$Tag.log;; 1) echo Syntax- oder Anwendungsfehler >> $log/Sicherung_$Tag.log;; 2) echo Protokollinkompatibilität >> $log/Sicherung_$Tag.log;; 3) echo Fehler bei der Auswahl von Dateien und Ein-/Ausgabeverzeichnissen >> $log/sicherung_$tag.log;; 4) echo Nicht unterstützte Aktion: ein Versuch, 64-Bit-Dateien auf einer Plattform zu manipulieren, die diese nicht unterstützt; oder eine Option, die vom Client, aber nicht vom Server unterstützt wird. >> $log/sauvegarde_$jour.log;;; 5) echo Fehler beim Starten des Client-Server-Protokolls >> $log/sauvegarde_$jour.log;; 6) echo Dämon kann nicht in die Logdatei schreiben >> $log/sauvegarde_$jour.log;; 10) echo Fehler in der Socket-I/O >> $log/sauvegarde_$jour.log;; 11) echo Fehler bei der Datei-I/O >> $log/sauvegarde_$jour.log;; 12) echo Fehler im Datenstrom des Rsync-Protokolls >> $log/sicherung_$Tag.log;; 13) echo Fehler bei der Programmdiagnose >> $log/sicherung_$Tag.log;;; 14) echo Fehler im IPC-Code>> $log/sauvegarde_$jour.log;; 20) echo SIGUSR1 oder SIGINT empfangen >> $log/sauvegarde_$jour.log;; 21) echo "Ein Fehler, der von waitpid() zurückgegeben wurde" >> $log/sauvegarde_$jour.log;;; 22) echo Fehler beim Zuweisen der Hauptspeicherpuffer >> $log/sicherungskopie_$Tag.log;; 23) echo Teilweise Übertragung aufgrund eines Fehlers >> $log/sicherungskopie_$Tag.log;; 24) echo Teilweise Übertragung aufgrund einer verschwundenen Quelldatei >> $log/sicherungskopie_$Tag.log;; 25) echo Das --max-delete-Limit wurde erreicht >> $log/sicherungskopie_$Tag.log;;; 30) echo Maximale Wartezeit beim Senden/Empfangen von Daten überschritten >> $log/sicherungskopie_$Tag.log;; 35) echo Wartezeit beim Warten auf eine Verbindung überschritten >> $log/sicherungskopie_$Tag.log;; 255) echo Unerklärlicher Fehler >> $log/sicherungskopie_$Tag.log;; esac echo "-------------------------------------------------------------". >> $log/sicherungskopie_$tag.log# Endzeit im Protokollecho "Endzeit der Sicherung: $(Datum +%T)" >> $log/sicherungskopie_$tag.log echo "-------------------------------------------------------------" >> $log/sicherung_$tag.log# Wir löschen die Backups entsprechend der Retention.ssh $userssh@$hostssh rm -rf "backups_$retention" exit.

Quelle: GitHub tuxmika

Schlussfolgerung

Sie sind nun in der Lage, ein Skript für ein entferntes Backup mit Rsync zu erstellen, um Dateien und Ordner auf Ihren Online-Backupbereich mit LWS zu übertragen. Sie können Ihr Skript über einen Cronjob starten, so dass es einmal pro Woche startet.

Zögern Sie nicht, Ihre Fragen und Anmerkungen zu teilen!

help.lws.net/a/1229
War dieser Artikel hilfreich?

Ja

Nicht

23 021 Mal gelesen

Vielen Dank! Stellen Sie gerne Fragen zu unserer Dokumentation, wenn Sie weitere Informationen wünschen, und helfen Sie uns, sie zu verbessern.

Ähnliche Artikel

Eine Frage zu diesem Artikel?

Stellen Sie sie dem LWS-Team und der Community. Die Antwort wird nach Moderation veröffentlicht.

Stellen Sie eine Frage an das LWS-Team und seine Gemeinschaft

DSGVO: Verantwortlicher: LWS-Ligne Web Services. Zweck: Moderation und öffentliche Veröffentlichung Ihrer Frage, gegebenenfalls Benachrichtigung über eine Antwort. Rechtsgrundlage: Einwilligung (Art. 6 Abs. 1 lit. a DSGVO). Speicherdauer der E-Mail-Adressen: 90 Tage nach der Benachrichtigung, höchstens 12 Monate ohne Antwort. Zur Ausübung Ihrer Rechte siehe den DSGVO-Abschnitt unserer AGB.