Hallo zusammen,
ausnahmsweise jetzt einmal nichts zu raspiBackup ...
Im Thread
Dateien oder Verzeichnis per sftp auf Webserver laden
Ich bin absoluter Anfänger.
Ich betreibe einen Rasberry als Wetterstation mit Weewx das funktioniert auch einwandfrei. Die Datnbank wird per Script auf einer SSD gesichert.
Nun möchte ich aber diese Sicherungen per Sftp auf den von mir genutzten Webserver per Script hochladen.
Ich habe hier eines gefunden, doch leider funktioniert es nicht richtig:
(Quelltext, 37 Zeilen)
Folgende Meldung kommt nach dem ausführen des Scripts:
(Quelltext, 12 Zeilen)
Kann mir da jemand weiterhelfen?
Danke…
war die Frage nach einem Script aufgekommen, mit dem man einfach ein Verzeichnis per SFTP auf einen Webserver o.ä. hochladen kann.
Sozusagen als Backup nutzbar.
Ich habe in dem Thread aus meinem ursprünglichen Einzeiler
lftp -e 'lcd /media/ssd/Weewx_Sicherungen && mirror --reverse --verbose -O /files/Weewx_Sicherungen ; quit' sftp://username:password@host:port
dann schnell einen aufgehübschten 50-Zeiler gemacht. Wie das halt so geht beim Programmieren...
Zur weiteren Pflege habe ich das Script nun bei Github untergebracht: https://github.com/gchriz/simpleremotebackup.sh
Die ursprünglichen Versionen lasse ich aber in o.g. Thread stehen.
Hier nun eine kurze Beschreibung:
simpleremotebackup.sh
Ein einfaches Backup-Skript zum Kopieren eines lokalen Verzeichnisses via SFTP auf einen entfernten Server.
Intern verwendet wird das Program lftp.
Viel Spaß mit dem Script, allerdings auf eigenes Risiko! Ich übernehme keinerlei Garantien.
Optionale Erzeugung eines Basisverzeichnis am Ziel mit dem Namen des Quellverzeichnisses
Es kann der Name des Quellverzeichnisses (basename) als Verzeichnis auf dem Zielserver angelegt werden.
Oder alternativ nur der Inhalt des Quellverzeichnisses zum Ziel kopiert werden.
Siehe bei den Beispielen unten (TGTCREATEBASEDIR).
Optionale Versionierung (VERSIONDIR)
- keine Versionen, nur ein Zielverzeichnis
- ein Unterverzeichnis pro Datum (JJJJ-MM-TT)
- ein Unterverzeichnis pro Tag der Woche (1..7)
- ein Unterverzeichnis pro Tag der Woche (Mo..So, je nach locale)
- ein Unterverzeichnis pro Woche (W01..W53) mit Unter-Unterverzeichnissen pro Tag der Woche (1..7)
- ein Unterverzeichnis pro Woche (W01..W53) mit Unter-Unterverzeichnissen pro Wochentag (Mo..So, je nach locale)
- ein Unterverzeichnis pro Monat (01..12) mit Unter-Unterverzeichnissen pro Tag (01..31)
Konfiguration
Die oben vorgestellten Verhaltensweisen können direkt im Quelltext des Skriptes konfiguriert werden.
Dort sind auch weitere Details erklärt.
Beispiel
Mit zwei zu sichernden Dateien in 'SRCDIR' '.../data'
an einem 'Sonntag, 6. März 2022' produzieren obige Variationen der Versionierung folgende Strukturen im Zielverzeichnis:
mit
TGTCREATEBASEDIR=no TGTCREATEBASEDIR=yes
├── file1.txt └── data
├── file2.txt ├── file1.txt
└── file2.txt
├── 2022-03-06 ├── 2022-03-06
│ ├── file1.txt │ └── data
│ └── file2.txt │ ├── file1.txt
│ └── file2.txt
├── 7 ├── 7
│ ├── file1.txt │ └── data
│ └── file2.txt │ ├── file1.txt
│ └── file2.txt
├── Sun ├── Sun
│ ├── file1.txt │ └── data
│ └── file2.txt │ ├── file1.txt
│ └── file2.txt
├── W09 ├── W09
│ └── 7 │ └── 7
│ ├── file1.txt │ └── data
└── file2.txt │ ├── file1.txt
│ └── file2.txt
├── W09 ├── W09
│ └── Sun │ └── Sun
│ ├── file1.txt │ └── data
└── file2.txt │ ├── file1.txt
│ └── file2.txt
├── M03 ├── M03
│ └── 06 │ └── 06
│ ├── file1.txt │ └── data
│ └── file2.txt │ ├── file1.txt
│ └── file2.txt
Alles anzeigen
Hinweise
* lftp hat für die hier intern verwendete Funktion "mirror" neben vielen anderen auch eine Option --delete, mit der auf der Zielseite überschüssige, also nicht zur aktuellen(!) Kopieraktion gehörende Dateien gelöscht werden.
Das ist ein hilfreiches Feature, aber auch sehr gefährlich:
Es werden leicht zu viele Dateien/Verzeichnisse gelöscht, und zwar, wenn man ein Zielverzeichnis angibt, welches auch parallel abgespeicherte Daten enthält, die nicht zur aktuellen(!) Kopieraktion gehören. z.B. bei Versionierung.
Deshalb ist --delete zur Zeit (noch) nicht implementiert.
* Bei der ersten Verbindung zum entfernten Server meldet lftp manchmal einen Fehler oder hängt.
Bitte dann initial ein manuelles `ssh user@server` ausführen, um den "known-hosts" Dialog abzuschließen.
(Das müsste zwar nun dank eines Hinweises von KKoPi behoben sein, aber der Hinweis bleibt erst einmal hier stehen.)