Hi,
ich möchte ein Skript für meinen Backup Server schreiben, mit dem alle Clients im LAN regelmäßig gesichert werden.
Kennt jemand eine fertige Lösung für genau die Aufgabe? Dann bräuchte ich das Rad nicht neu erfinden, das wäre spitze!
Ich hab schon etwas gegoogelt und bis jetzt nichts gefunden, werde aber gleich noch weiter suchen.
Wenn das Skript am Ende was wird, dann poste ich es hier.
Welche Sprache?
Ich bin mir nicht sicher, ob ich das Skript in Python oder Bash schreiben soll. In Bash habe ich bis jetzt nur ein paar kleine Skripts geschrieben und fand die Sprache ziemlich unangenehm. Ich hab von mehreren Personen gehört, dass sie komplett auf Bash verzichten und an Stelle dessen Python verwenden. Meint ihr es macht Sinn, das Skript in Python zu schreiben? Rein sprachlich hätte ich auch mehr Bock auf Python..
Zu 1)
a) Ich hätte die Filesystems der Clients, welche gesichert werden sollen per NFS exportiert. Der Server könnte diese dann mounten und die Backups lokal starten.
Ich frage mich, wie man hier am besten triggert. Ich hätte gesagt, der Server schaut stündlich, ob ein Rechner im LAN verfügbar ist. Wenn einer verfügbar ist, müsste er irgendwie überprüfen, ob die NFS Exports verfügbar sind. Wenn ein NFS verfügbar ist würde er mit 1b) weiter machen.
b)Ich vermute, dass ein Problem durch die Verschlüsselung mancher Client Partitionen hinzukommt. Wenn z.B. ein Client bootet, ohne die Partition zu entschlüsseln, dann wäre er im LAN verfügbar und sein NFS Export wäre auch verfügbar, allerdings nur als leerer Ordner. Der Server dürfte das Backup in dem Fall nicht starten. Es müsste also noch eine Validierung stattfinden. Z.B. könnte der Server noch prüfen, ob der NFS Export leer ist oder Ähnliches.
Zu 2)
Ich denke am einfachsten wäre es eine .txt File anzulegen, in welcher der Server notiert, welche Filesystems wann gesichert wurden. Allerdings wäre ich dafür auf ein Feedback von Rsync angewiesen. Wenn ich von Rsync eine Nachricht bekomme, ob der Task abgeschlossen wurde, könnte ich diese Info mit dem entsprechenden Timestamp in die Txt schreiben.
Hier sind weitere Probleme denkbar:
1) Was ist wenn ein Backup länger läuft als 1Std.?
2) Was ist wenn ein Backup länger läuft als 24Std.?
Eine Mehrfachausführung muss verhindert werden.
Zu 3)
Das ist wichtig, weil der Raspberry Pi sonst schnell überlastet wäre. Ich denke auch hier wäre wie in 2) ein Feedback von rsync nötig, um zu wissen, wann das nächste Backup starten darf. Oder das Script müsste irgendwie überprüfen, ob der Vorherige Prozess noch aktiv ist oder Ähnliches.
Zu 4)
Die Backups sollen im Snapshot Verfahren erstellt werden, damit ich am Ende verschiedene Zeitpunkte eines Backups abrufen kann. Dabei werden Ordner für jeden Snapshot bzw. Zeitpunkt angelegt. Alle Dateien, die sich nicht verändert haben, werden einfach als Hardlink kopiert. Auf die Weise bekommt man mehere Snapshots, ohne großen Bedarf and Festplattenspeicher..
Für die Umsetzung könnte ich mich auf diese Herangehensweise berufen:
http://www.mikerubel.org/computers/rsync_snapshots/
Am Ende soll das Backup in etwa so aussehen:
daily.0
daily.1
daily.2
weelkly.0
weelkly.1
weelkly.2
monthly.0
monthly.1
monthly.3
yearly.0
yearly.1
yearly.3
Ich würde mich über Tipps und Ratschläge sehr freuen! :-)
ich möchte ein Skript für meinen Backup Server schreiben, mit dem alle Clients im LAN regelmäßig gesichert werden.
- Der Backup Server ist ein Raspberry Pi 2 und läuft 24/7.
- Der wichtigste Client ist ein Laptop, welches unregelmäßig bootet und unregelmäßig lange läuft. Die zu sichernde Partition ist mit Luks/dm verschlüsselt.
- Ein weiterer Client ist ein Renderserver, der sehr selten und unregelmäßig bootet und auch unregelmäßig lange läuft.
- a) Der Server startet das Backup, wenn ein Client-Filesystem im LAN (NFS) verfügbar ist.
b) Der Server startet das Backup NUR, wenn das Client-Filesystem aus 1a) bereits vom Client entschlüsselt wurde. - Der Server startet das Backup NICHT, wenn der NFS mounting Point am selben Tag schon einmal komplett gesichert wurde.
- Der Server führt die Client-Backups nacheinander aus, falls mehrere Client-Filesystems im LAN (NFS) verfügbar sind.
- Bei den Backups handelt es sich um incremental Backups, die im Snapshot Verfahren gespeichert werden.
Kennt jemand eine fertige Lösung für genau die Aufgabe? Dann bräuchte ich das Rad nicht neu erfinden, das wäre spitze!
Ich hab schon etwas gegoogelt und bis jetzt nichts gefunden, werde aber gleich noch weiter suchen.
Wenn das Skript am Ende was wird, dann poste ich es hier.
Welche Sprache?
Ich bin mir nicht sicher, ob ich das Skript in Python oder Bash schreiben soll. In Bash habe ich bis jetzt nur ein paar kleine Skripts geschrieben und fand die Sprache ziemlich unangenehm. Ich hab von mehreren Personen gehört, dass sie komplett auf Bash verzichten und an Stelle dessen Python verwenden. Meint ihr es macht Sinn, das Skript in Python zu schreiben? Rein sprachlich hätte ich auch mehr Bock auf Python..
Zu 1)
a) Ich hätte die Filesystems der Clients, welche gesichert werden sollen per NFS exportiert. Der Server könnte diese dann mounten und die Backups lokal starten.
Ich frage mich, wie man hier am besten triggert. Ich hätte gesagt, der Server schaut stündlich, ob ein Rechner im LAN verfügbar ist. Wenn einer verfügbar ist, müsste er irgendwie überprüfen, ob die NFS Exports verfügbar sind. Wenn ein NFS verfügbar ist würde er mit 1b) weiter machen.
b)Ich vermute, dass ein Problem durch die Verschlüsselung mancher Client Partitionen hinzukommt. Wenn z.B. ein Client bootet, ohne die Partition zu entschlüsseln, dann wäre er im LAN verfügbar und sein NFS Export wäre auch verfügbar, allerdings nur als leerer Ordner. Der Server dürfte das Backup in dem Fall nicht starten. Es müsste also noch eine Validierung stattfinden. Z.B. könnte der Server noch prüfen, ob der NFS Export leer ist oder Ähnliches.
Zu 2)
Ich denke am einfachsten wäre es eine .txt File anzulegen, in welcher der Server notiert, welche Filesystems wann gesichert wurden. Allerdings wäre ich dafür auf ein Feedback von Rsync angewiesen. Wenn ich von Rsync eine Nachricht bekomme, ob der Task abgeschlossen wurde, könnte ich diese Info mit dem entsprechenden Timestamp in die Txt schreiben.
Hier sind weitere Probleme denkbar:
1) Was ist wenn ein Backup länger läuft als 1Std.?
2) Was ist wenn ein Backup länger läuft als 24Std.?
Eine Mehrfachausführung muss verhindert werden.
Zu 3)
Das ist wichtig, weil der Raspberry Pi sonst schnell überlastet wäre. Ich denke auch hier wäre wie in 2) ein Feedback von rsync nötig, um zu wissen, wann das nächste Backup starten darf. Oder das Script müsste irgendwie überprüfen, ob der Vorherige Prozess noch aktiv ist oder Ähnliches.
Zu 4)
Die Backups sollen im Snapshot Verfahren erstellt werden, damit ich am Ende verschiedene Zeitpunkte eines Backups abrufen kann. Dabei werden Ordner für jeden Snapshot bzw. Zeitpunkt angelegt. Alle Dateien, die sich nicht verändert haben, werden einfach als Hardlink kopiert. Auf die Weise bekommt man mehere Snapshots, ohne großen Bedarf and Festplattenspeicher..
Für die Umsetzung könnte ich mich auf diese Herangehensweise berufen:
http://www.mikerubel.org/computers/rsync_snapshots/
Am Ende soll das Backup in etwa so aussehen:
daily.0
daily.1
daily.2
weelkly.0
weelkly.1
weelkly.2
monthly.0
monthly.1
monthly.3
yearly.0
yearly.1
yearly.3
Ich würde mich über Tipps und Ratschläge sehr freuen! :-)