CLOSED: [2019-10-06 Son 20:07] :LOGBOOK: - State "DONE" from "" [2019-10-05 Sa 11:30] :END: :PROPERTIES: :CREATED: [2019-06-16 Son 21:30] :ID: 2019-10-06-restic :END: Es ist wahrscheinlich etwas peinlich, wenn ich das hier verkünde, aber es ist nun leider die Wahrheit. Bis dato konnte ich keine vernünftige Backuplösung für meinen privaten Bereich erstellen. In diesem Beitrag möchte ich auf die Gründe dafür eingehen, was ich mir von einer Backuplösung erwarte und wie ich nun dies mithilfe von restic versucht habe zu lösen. ** Gründe für das Fehlen einer Backuplösung - Faulheit: Wer kennt das nicht, es wird schon nix passieren, daher kann ich mir mit dem Backup erstellen Zeit lassen. - Bisherige gefundene Lösungen waren mir zu kompliziert bei der Einrichtung, der Bedienung oder der Verwaltung. - Zufrieden mit unregelmäßig erstellten Backups mit dem Werkzeug dd. ** Was ich mir von einer Backuplösung erwarte - einfache Bedienung - leicht zu verwalten - Backup sollte nicht in einem propritären Format abgelegt werden, sodass ich die Backups auch lesen kann, falls die Software mal nicht mehr existiert. - einfache Wiederherstellung - Sicherheit, dass Backup wiederherstellbar ist ** restic - was ist das? Mein Bruder hat gemeint bei den GLTs gab es mal einen Lightning Talk über [[https://restic.net][restic]]. Bei meiner Suche bin ich auf das Video des Gründers "[[https://media.ccc.de/v/c4.openchaos.2016.01.restic][restic - Backups mal richtig]]" gestoßen und ich war sofort fasziniert. Es handelt sich um ein schnelles, sicheres und freies (lizensiert unter der [[https://github.com/restic/restic/blob/master/LICENSE][BSD 2-Clause Lizenz]]) Backupprogramm. Und was mir besonders gut gefällt, die Backups können überprüft werden, ob sie valide sind. Über die Installation möchte ich hier nicht näher eingehen, diese ist in der Dokumentation hervorragend beschrieben. Ich möchte hier nur zeigen, wie ich restic in meinem Umfeld einsetze oder einsetzen will. *** Stufe 1 - erledigt Mit restic Backups manuell auf einer mobile USB-Platte erstellen. Diese Stufe war gedacht, um mit restic spielen zu können und eine Konfiguration für meine Zwecke zu finden. #+NAME: SFT Konfiguration für lokale Backup Erstellung #+BEGIN_SRC sh ./restic -r /media/backup backup /home/[username] --exclude-file=exclude.txt #+END_SRC Bei der exclude-file handelt es sich um eine Datei, die alle Verzeichnisse enthält, die nicht ins Backup kommen sollen. Ich habe mich im Großen und Ganzen an den [[https://forum.restic.net/t/useful-exclude-patterns/828][Vorschlag]] aus dem restic-Forum gehalten, kann sein, dass ich im Laufe der Zeit noch weitere Anpassungen vornehmen werde. Für den Anfang bin ich damit aber sehr zufrieden. Der erste Backup Durchlauf dauerte für 200 GB an die 4 Stunden. Die weiteren Backups (Durchführung nach 1 Woche) dauerten nur mehr wenige Minuten. *** Stufe 2 - erledigt Mit restic Backups über das Heimnnetzwerk auf eine Festplatte erstellen. Diese Stufe war gedacht als die Endausbau-Stufe, allerdings bin ich beim Betrieb auf Probleme gestoßen, weshalb ich diese Stufe etwas adaptiert habe. Weshalb ich mich gerade mit der Erstellung einer Backupstrategie beschäftige, liegt hauptsächlich daran, dass ich sicherstellen möchte, dass die Daten von meinem Vater gesichert sind. Er macht sehr viele Fotos und Fotobücher und es wäre sehr schade, wenn durch einen Störfall es zu Datenverlust kommen würde. Nun habe ich zwar ein NAS bei mir eingerichtet, das steht allerdings in meinem Haus und zu meinen Eltern habe ich leider nur eine 100MB-Leitung verlegt, da zum damaligen Zeitpunkt die Erweiterung des Netzwerkes durch Mediacenters und NAS nicht absehbar war. Daher habe ich mich nun dafür entschieden, dass bei meinen Eltern ein Zwischenspeicher eingerichtet wird, damit sie ihre Daten schneller sichern und darauf zugreifen können. Dies habe ich nun durch den Einsatz eines Raspberry Pi 3 und einer 1.5 TB USB-Festplatte realisiert. Die Backups werden dabei über SFTP auf die USB-Festplatte übertragen. #+NAME: SFT Konfiguration für Backup Erstellung #+BEGIN_SRC sh ./restic -r sftp:[pi-user]@rpibackup:/media/backup backup /home/[username] --exclude-file=exclude.txt #+END_SRC *** Stufe 3 In dieser Stufe möchte ich die Backup Erstellung über cronjobs verwalten. Dabei möchte ich mehr von der restic Funktionalität verwenden, sodass ich wirklich eine Backupstrategie umsetzen kann. Es soll dann vielleicht wöchentlich, monatlich und jährlich ein Backup erstellt werden, wobei mich gewisse Backups aus der Vergangenheit nicht mehr interessieren und diese dann gelöscht werden sollen. Hier bin ich allerdings noch sehr weit am Anfang der Konzeptphase und hier muss sicher noch etwas Gehirnschmalz hineingesteckt werden. *** Stufe 4 In dieser Stufe möchte ich die Backups vom Raspberry von meinem Vater auf mein NAS per rsync übertragen. Dies soll über Nacht passieren, um sicher zu stellen, dass nicht gleichzeitig ein restic-Backup läuft. Geschwindigkeit ist hier daher nur Nebensache, es geht mir darum, dass das Backup noch wo anders gesichert wurde. ** Fazit Ich bin mit zwar erst am Anfang des Sammelns meiner Erfahrungen mit restic, aber ich noch immer sehr davon begeistert. Die bisherigen Arbeiten waren sehr leicht und führten dazu, dass ich in kürzester Zeit eine Vorablösung für meine Eltern realisieren konnte. Natürlich werde ich restic auch für meine eigenen Backups einsetzen, habe ja auch wichtige Daten gespeichert. Hier bin ich aber mit der manuellen Lösung per USB-Festplatte zufrieden. Mit der Speicherung auf mein NAS habe ich noch Grundlegende SSH Zugriffs- und Konfigurationsprobleme, die ich erst lösen muss. Wie anfangs erwähnt ist vorrangig mein Ziel für meine Eltern eine automatisierte Lösung zu schaffen.