Automatisches Erstellen eines Backups (Pi sichert sich selbst)

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • weil hier immer wieder rsync vorgeschlagen wird: ich habe dann lieber gleich rsnapshot genommen. rsnapshot baut auf rsync auf und nutzt intensiv Hardlinks. Das Ergebnis ist ein tägliches Backup, das in der Verzeichnisstruktur komplett aussieht, aber ungeänderte Dateien nur ein mal pysikalisch ablegt. Man muss dafür nicht selbst Scripte schreiben, sondern lediglich rsnapshot installieren (apt-get install rsnapshot) sowie das config File anpassen (/etc/rsnapshot.conf). Dann noch ein paar Einträge in der crontab für 30 tägliche, 4 wöchentliche und 12 monatliche Backups, und fertig ist die Backuplösung.

    Allerdings kann rsnapshot nicht auf remote Medien via ssh schreiben. Deshalb läuft rsnapshot auf meinem Linux-basierten NAS und greift beim Backup auf den Raspi lesend zu. Alternativ könnte man sicher ein Laufwerk mounten und rsnapshot auf dem Raspi laufen lassen.

  • Automatisches Erstellen eines Backups (Pi sichert sich selbst)? Schau mal ob du hier fündig wirst!

  • rsnapshot benutze ich auch um mein normales System zu sichern :) Das Script ist gewachsen und speziell für den einfachen Pi Backup gedacht. Der kann auch ein dd oder tar Backup sein was auch häufig gewünscht wird. Ausserdem werden die Partitionsinformationen der SD Karte mitgesichert und können zum restore benutzt werden.

  • :blush: Beide Links sind Bullshit. Ich habe meine Domain umgezogen und in dem Kontext auch einen Upgrade vom Joomla vorgenommen. Dabei sind leider externe Links ungültig geworden.

    Das RestoreScript existiert nicht mehr und ist in der neuesten Version des Backupscripts mit eingebaut. Da mir noch Feedback von einem Tester fehlt ist es noch nicht publiziert. Wenn Du es testen möchtest kann ich es Dir gerne per email zuschicken sofern Du mir Deine eMail Adresse per PN mitteilst.

    Das Backupscript wird hier beschrieben und dort befindet sich auch der Link zum Script.

  • Sorry Gemeinde, dass ich dieses Thema nochmals aufmache.

    Ich hätte da noch eine Frage:
    wird die SD-Karte bei einem inkrementellen BackUp (nur veränderte Daten sichern) nicht genauso beansprucht, da es ja alle Dateien nach einem gesetzten Bit (=Datei wurde seit letztem backup verändert) abfragen muß ?

    Mit der Bitte um Antwort

    Danke im Voraus
    so long
    Perlchamp

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

    Einmal editiert, zuletzt von Perlchamp (28. April 2014 um 04:55)

  • Beim dd ( a ) wird der gesamte Karteninhalt gelesen.
    Beim tar ( b ) werden alle Daten gelesen, die auf der Karte benutzt werden.
    Beim rsync ( c ) werden nur die Daten gelesen, die sich geändert haben.

    ( a ) > ( b ) > ( c )

  • Hi framp,
    ich glaube, du hast mich mißverstanden ...
    woran bzw. wie erkennt Rsync eine geänderte Datei (ich denke mittels eines gesetzten Bits/Flag). DAZU muß es doch JEDE Datei überprüfen, ob das Flag gesetzt ist, oder ?
    Das war meine eigentliche Frage.

    Besteht denn eigentlich die Möglichkeit, z.B. mittels chmod (oder anders) die Partitionen mit einem Schreibschutz zu versehen, so dass das System/Dienste/etc. nichts auf die Partitionen schreiben können, solange das Backup läuft (wegen cache, etc.) ?

    so long
    Perlchamp

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

    Einmal editiert, zuletzt von Perlchamp (29. April 2014 um 12:50)

  • ...ich glaube, du hast mich mißverstanden ...

    Jupp.

    Zitat

    ...woran bzw. wie erkennt Rsync eine geänderte Datei (ich denke mittels eines gesetzten Bits/Flag). DAZU muß es doch JEDE Datei überprüfen, ob das Flag gesetzt ist, oder ?

    Das ext3/4 Filesystem benutzt inodes um Informationen zu Dateien zu speichern. Dazu gehört auch die letzte Änderungszeit der Datei. D.h. bei rsync muessen alle inodes auf der SD Karte durchsucht werden um zu prüfen, welche Dateien sich geändert haben und zu kopieren sind. Die Anzahl der Bytes die von Inodes benutzt werden ist sehr klein verglichen mit der Größer der gesamten SD Karte. Mit

    Code
    sudo tune2fs -l /dev/root | grep -i "inode.*[0-9]+"

    Erfaehrst Du wieviele Inode existieren bzw benutzt werden, wieviele Bytes ein Inode belegt und wieviele Bytes dann bei einem Rsyncdurchlauf zu lesen sind.

    Zitat

    ...Besteht denn eigentlich die Möglichkeit, z.B. mittels chmod (oder anders) die Partitionen mit einem Schreibschutz zu versehen, so dass das System/Dienste/etc. nichts auf die Partitionen schreiben können, solange das Backup läuft (wegen cache, etc.) ?...

    Interessante Frage. Ich kenne keine Moeglichkeit.

  • hallo framp,
    danke fürdeine Antworten.
    Könnte man die Partition "sperren" während des Backups, dann wäre dein Tool PERFEKT, oder ?

    so long
    Perlchamp

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • Nix ist jemals perfekt. Aber für meine Ansprüche erfüllt es seinen Dienst.

    Es wurden aber auch schon weitere Funktionen von Benutzern des Scripts nachgefragt und da sich der Aufwand immer im Rahmen hielt habe ich es auch immer eingebaut.

    Nur Deine gewünschte Funktion des Lockens der gesamten SD Karte kann ich nicht erfüllen.

  • hallo framp,
    ok, schade. Ich bastel mal weiter (theoretisch) an einer Möglichkeit ...

    schönen Abend
    so long
    Perlchamp

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • hallo framp,
    das Problem ist, dass zu noch zu wenig Programmiererfahrung habe, um zu wissen, was praktidch ist und was nicht...
    Der (momentan) einzige Weg, um ein Laufwerk zu sperren ist "Verschlüsselung". Aber dies ist dann wohl anwenderunfreundlich bzw. zu umständlich...

    aber ich bastel mal (theoretisch) weiter ...

    schönes WE

    so long
    Perlchamp


    EDIT:
    wer einen Windows-basierten Rechner hat und möchte gerne seine SD-Karte (vom PI) bearbeiten (Partitionen verkleinern, etc) sollte mal HIER nachsehen:
    => kann auf Wechseldatenträger zugreifen, erkennt alle Linux-Partitionen, kommt mit GPT und UEFI zurecht UND kann einzelne Partitionen kopieren - ein gparted für Windows sozusagen. Habe somit meinen 16GB-Karteninhalt auf ne 4GB gepackt (und sie läuft auf dem PI). Ist demzufolge auch ein Backup-Werkzeug - halt nicht 'on the run' ...

    so long
    Perlchamp

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

    Einmal editiert, zuletzt von Perlchamp (30. April 2014 um 19:32)

  • Moin Framp,

    eine wirklich prima Lösung :thumbs1: ich werde mich für die Tar-Variante entscheiden. Ich habe gesehen, dass im Script die Dirs /proc, /sys und /dev ausgeschlossen sind. Nachdem ich jetzt mal im Ubuntu-Wiki zur Verzeichnisstruktur nachgelesen habe verstehe ich auch, dass /proc und /sys im Backup entbehrlich sind. Aber warum kann auch auf /dev verzichtet werden?

    vg, Thomas

  • ... Aber warum kann auch auf /dev verzichtet werden?...

    Finde ich gut dass Du Dir das Script ansiehst was es tut :thumbs1:

    Man findet im Netz immer mal wieder welche die meinen es müsse mitgesichert werden. So wie ich das verstehe werden die /dev Devices beim Booten neu erzeugt und sind somit nutzlos im Backup.

    All meine Linux Backups enthalten seit Jahren keine /dev und liessen sich immer restoren (so auch das Backup meiner Pis) ;)

    PS: Wenn Du die Funktion unbedingt haben willst kannst Du ja eine Erweiterung des Scripts in dieser Richtung auf der Webseite anregen. Ist nicht die Erste die dann auch implementiert wird.

  • Moin

    Finde ich gut dass Du Dir das Script ansiehst was es tut

    Ja klar, wie soll man denn sonst verstehen, was das Script macht ...?... und warum es das tut?

    Man findet im Netz immer mal wieder welche die meinen es müsse mitgesichert werden. So wie ich das verstehe werden die /dev Devices beim Booten neu erzeugt und sind somit nutzlos im Backup.

    Ich werde natürlich Deinem Rat folgen und auch auf /dev verzichten. Ich würde die excludes gerne noch um einen Punkt erweitern.... und zwar um alle irgendwo existierenden .Trash-Ordner. Wie würdest Du den Befehl dazu ergänzen?

    Ok... mein PI läuft also und jetzt steht die Produktivbetreuung an... :s ... und ich mache mir Gedanken über die Datensicherung insgesamt, also nicht nur der Pi-Partition, sondern auch aller Daten. Ich hoffe, das ist OK, wenn ich mich mit meiner Idee hier einhänge... weil das Thema ja auch "Automatisches Backup erstellen" heisst.

    Ich muss 4 Sicherungen erstellen:
    1. Die Pi-Partition (das mach ich entsprechend Deines Scriptes) mit tar
    2. Das Mail-Dir ("private" Freigaben für die Thunderbird-Profile mit 7z (wg. FTP-Upload)
    3. Die Home-Dirs (ebenfalls "private" Freigaben) mit tar
    4. Das Work-Dir "DatenAlle" mit tar

    Ich habe die Mail-Profile mit dem folgenden Script MailBak fertig:

    **********************************************************************
    Ich habe mein Script hier wieder entfernt, da es sich hier in diesem Thread
    um ein Tutorial handelt und mein Script hier nichts verloren hat.

    Die derzeit endgültige Fassung habe ich in einen neuen Thread übertragen:
    Automatische Datensicherung

    **********************************************************************

    Bezüglich der Sicherungsplanung habe ich mir folgendes mit Hilfe der Crontab überlegt:
    Aufruf "MailBak full" an jedem 1. des Monats um 4 Uhr morgens
    Aufruf "MailBak incremental" täglich um 3 Uhr morgens
    Aufruf "MailBak renew" an jedem 15. des Monats um 2:30 Uhr morgens

    - Jeden 1. des Monats wird ein völlig neues Komplett-Bak erstellt

    - Täglich wird ein zweites incrementelles Bak gepflegt

    - An jedem 15. des Monats wird um 2:30 Uhr durch kopieren des letzten "full" auf das gestrige "incremental" alle gelöschten Files älter als 15. Tage im "incremental" entfernt und kurz danach wird "incremental" auf den aktuellen Stand gebracht.

    So... ich bitte um konstruktive Kritik .... das würde mich sehr freuen.... und wenn Ihr Lust dazu habt, vielleicht auch um Anregungen.... das würde mich noch mehr freuen :)

    Und am meisten wüde ich mich freuen, wenn mir jemand beim 7z-Aufruf beim Exclude von Dirs/Files helfen könnte. Ich kriegs einfach nicht hin, neben dem Trash-Ordner eine zweite oder auch dritte Gruppe auszuklammern. Deswegen ist der Call auskommentiert. Was jemand, welchen Fehler ich da mache?

    Gruß, Thomas

    Einmal editiert, zuletzt von WinterUnit16246 (19. August 2014 um 18:33)

  • ... Ich würde die excludes gerne noch um einen Punkt erweitern.... und zwar um alle irgendwo existierenden .Trash-Ordner. Wie würdest Du den Befehl dazu ergänzen?


    Das mache ich. Ich führe einen weiteren Parameter ein, wo Du beliebige weitere Verzeichnisse excluden kannst.

    Zitat

    ... und ich mache mir Gedanken über die Datensicherung insgesamt, also nicht nur der Pi-Partition, sondern auch aller Daten. ...

    Den Punkt verstehe ich nicht ganz. Mit dem Script kannst Du auch Datenpartitionen sichern. Wenn Du z.B. ab / sicherst und unter /mydata hast Du Deine Daten gemountet, werden diese auch mit gesichert. Allerdings würde ich dann kein tar Backup nehmen sonden ein rsync. Es geht einfach schneller nur Deltas zu sichern.

  • Nachdem ich mir das jetzt genauer angesehen habe wird es keinen Parameter geben um weitere excludes zu bekommen. Dann kann es durch falsche Parametrisierung dazu führen, dass das erstellte Backup nicht mehr vollständig ist. Das darf nicht möglich sein :no_sad:

  • Den Punkt verstehe ich nicht ganz. Mit dem Script kannst Du auch Datenpartitionen sichern. Wenn Du z.B. ab / sicherst und unter /mydata hast Du Deine Daten gemountet, werden diese auch mit gesichert. Allerdings würde ich dann kein tar Backup nehmen sonden ein rsync. Es geht einfach schneller nur Deltas zu sichern.

    Moin

    Ja, was soll ich sagen .... das ist nicht ganz so einfach ... ich mache keine Sicherungskopie, sondern ich versuche ein Sicherungskonzept zu realisieren. Und ich muss dabei ein einige Besonderheiten und Beschränkungen berücksichtigen.

    Zum Beispiel:
    - dd sichert die ganze Partition. Das kann ich beim PI aber nicht nutzen, weil von der 32Gb-Partition nur 4 genutzt werden. Das Backup wäre sinnlos oversized.

    - 7zip sichert keine Rechte. Also kann ich das bei rechte-relevanten Dir's nicht nutzen, sondern nur dort, wo exklusive Users-Rechte gesetzt sind.

    -tar hat eine zu geringe Kompression, also kann ich das nicht nutzen, um SIKs in einen 500mb-Luks-Container zu kopieren, ums anschließend mit FTP weiterzutransportieren.

    Das bedeutet, ich brauche verschiedene untereinander und aufeinander abgestimmte Einzellösungen.

    Im Regelfall sind bei uns die wichtigen Daten alles persönliche Daten, ganz klar abgegrenzte Benutzer-Daten.... manuell erstellt, bei Verlust nicht ohne weiteres reproduzierbar. Da sind beispielsweise die Oberstufen-Projektarbeiten meines Sohnes. Derzeit meinen Source -Codes, mein von Hand erstelltes persönliches Linux-Doc-Archiv (wer schreibt,der bleibt) , usw. Das werde ich alles mit 7z machen, weil Attribute und Rechte ohne viel Arbeit wiederhergestellt werden können.

    Also, zusammengefasst. Das Konzept umfasst die Auswahl unterschiedlicher Archivierer, unterschiedliche Weiterverarbeitung der Archive, unterschiedliche Zyklen zur Sicherung. Und das wichtigste, ich muss schon sehr darüber nachdenken, wie ich den für solche rechenintensiven Jobs etwas unterdimensionierten Pi optimal einplane.

    Die Pi-Partition wird mit tar gesichert, monatlich einmal komplett, wöchentlich incremental.

    Weitere Daten, die bisher nicht berücksichtigt sind, werden wegen der zu sichernden Attribute ebenfalls mit tar gesichert. Das würde ich aber gerne über den Device-Mapper mit mount auf ein tar-loop-device realisieren - sofern das möglich ist . Ich weiss nämlich im Moment gar nicht, ob das geht und ob es für tar-archive überhaupt einen mount-treiber gibt.... mal sehen ...


    Gruß, Thomas


    Nachdem ich mir das jetzt genauer angesehen habe wird es keinen Parameter geben um weitere excludes zu bekommen. Dann kann es durch falsche Parametrisierung dazu führen, dass das erstellte Backup nicht mehr vollständig ist. Das darf nicht möglich sein


    Ja, ich bin zwischenzeitlich auch zu dieser Erkenntnis gekommen.

    Bis auf die Trash-Ordner. Ich starte ein Test-Backup und krieg Panik, weil ich dachte, der ist gestorben und hat sich aufgehängt und meine ungesicherten offenen Fenster sind verloren. Mit flauem Gefühl im Magen dachte ich nur noch "raus hier ...ich muss raus". Ich bin dann aufgestanden und ne Stunde mit meinem Hund spazieren gegangen ... ich musste mich beruhigen, wegen der Verluste.

    Und als ich zurück war, lächelt mich mein pi an und sagt "wollen wir spielen?"

    Ich habe nicht schlecht gestaunt, als ich mein Backup gesehen habe, statt der erwarteten 2 MB mit nerTest -Struktur, riesige 4 GB groß. Die Ursache war ein Trash-Ordner mit gelöschter mkv :dodgy:

    Welchen Grund könnte es geben, Trash nicht generell zu excluden?

    Gruß Thomas

    Einmal editiert, zuletzt von WinterUnit16246 (15. August 2014 um 10:40)

  • Hab mir nicht alles durch gelesen und auch nicht das Skript aus verzeiht wenn ich jetzt aus Unwissenheit tote Hotthüs reite...

    Um eine Platte zu locken könnte man die mit -ro remounten. Müsste gehen dürfte aber bei /tmp /var und damit fürs OS ein Problem ergeben, wenn das OS da nicht mehr reinschreiben darf. Nur so ne Idee

    Daher wäre meine Meinung, wichtige configs sichern, das Betriebssystem ab und an und alle wichtigen nicht reporuzierbaren Daten auf ne extra Partition/Platte und die dann richtig sichern....

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!