Automatisches Erstellen eines Backups (Pi sichert sich selbst)

  • ...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....

    Kam bei mir nicht so an dass Du eine eigene Lösung schreiben willst. Jedenfalls solltest Du dann einen eigenen Thread erstellen um das zu diskutieren, denn dieses hier ist ein Tutorial Thread ;)

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

  • Kam bei mir nicht so an dass Du eine eigene Lösung schreiben willst. Jedenfalls solltest Du dann einen eigenen Thread erstellen um das zu diskutieren, denn dieses hier ist ein Tutorial Thread


    Ja, Du hast Recht... sorry, tut mir leid.... aber zum Schluß möchte ich schon noch erwähnen, dass meine Lösung ganz klar durch dieses Tutorial inspiriert ist.... eigentlich so noch mehr... ohne dieses Tutorial gäbs meine Lösung gar nicht. Und ohne meigrafs Hinweis auf den device-mapper hätte ich gar nicht meinen LUKS-Container realisieren können, weil ich von solchen Möglichkeiten gar nichts wusste. Ich habe mein Script fertig, brauch noch ein paar finale Test's und werd das am Wochenende hier nur noch mal stille updaten, weil oben doch einige Fehler drin sind.

    Ansonsten Danke für dieses Tutorial. :thumbs1:

    Gruß, Thomas

    Edited once, last by WinterUnit16246 (August 15, 2014 at 10:32 PM).

  • Guten Tag framp,
    guten Tag Community!

    Erst mal einen ganz herzlichen Dank für dieses wirklich gute Tutorial! Endlich mal einer, der erklärt, was Sache ist. Ich hatte (naja, wahrscheinlich habe ich noch...) null Ahnung von Bash-Scripts, aber das hier ist nun wirklich cool!

    Ich habe aber noch zwei Fragen hierzu:

    1. Wenn man den Weg über dd geht, ist alles ganz easy und so wie Du beschrieben hast (in diesem Tutorial, nicht mit dem downloadbaren größeren Script, das kenne ich noch nicht).

    Wenn man aber tar anstelle dessen wählt, um einerseits die SD ein wenig zu entlasten und zweitens damit auch die Möglichkeit gewinnt, auf einer nicht ganz so großen Karte evtl. ein Restore machen zu können, klappt das so nicht!

    tar hat Schwierigkeiten mit absoluten Dateipfaden, um zu vermeiden, bei einem Restore "versehentlich" alles sofort in den Root-Ordner zu schmeißen. In der Regel wird man das ja sogar wollen wollen, daher könnte tar von mir aus den absoluten Dateipfad gerne unterstützen. Tut es aber so erst einmal nicht. Erst wenn in dem Block, der bei Dir oben mit "# tar..." beginnt, vorher ein "cd /" gesetzt wird und damit direkt in das Hauptverzeichnis gesprungen wird, bevor dann der tar-Befehl das eigentliche Backup macht, klappt das. Doof ist allerdings, dass trotzdem der Hinweis erscheint 'Entferne führende "/" von Elementnamen' und später im laufenden Backup-Prozess 'Entferne führende „/“ von Zielen harter Verknüpfungen'.

    Trotzdem scheint es zu laufen, aber nerven tut es trotzdem. Zumindest bei mir war es so.

    Irgendwo habe ich gelesen, dass die Verwendung des Parameters "-C" hinter dem kompletten tar-Befehl (aber noch vor dem "\") dazu führen soll, dass es klappt. Ich habe es damit trotzdem nicht ohne die Fehlermeldung ausgegeben bekommen und ohne das "cd /" am Anfang ging es auch nicht.

    Gibt es da eine Verbesserungsmöglichkeit oder habe ich noch was falsch verstanden?

    2. Was ein bisschen stört ist die Tatsache, dass der Raspberry Pi nun beim Backup rödelt und rödelt. Insbesondere, da er die zu sichernden Dateien ja auch noch packen muss bei Verwendung von tar dauert es eine gefühlte halbe Ewigkeit, bis das Teil fertig ist. Trotzdem ist es weiterhin nutzbar, aber das ist ja nicht Sinn der Sache.

    Kann man in das Script eine Art Fortschrittsanzeige einbauen ähnlich z.B. zu "wget" oder so, wo immer diese "="-Zeichen in den eckigen Klammern mitlaufen. Geht sowas? Ich weiß, dass es möglich wäre, sich in einem zweiten Fenster die Prozesse anzeigen zu lassen, die laufende PID von einem dd-Backup-Prozess zu "killen" und damit irgendwie zumindest die Größe der bereits geschriebenen Datei anzeigen zu lassen. Die Methode halte ich aber insbesondere bei tar für total blöde, weil ich ja gar nicht weiß, wie groß das Endergebnis sein würde. Außerdem weiß ich nicht, ob der Prozess mit "kill" nicht sogar tatsächlich abgeschossen würde, was ja nicht im Sinne dieser Aktion wäre.

    Vielen Dank für die Hilfe im Voraus!

  • ...Erst mal einen ganz herzlichen Dank für dieses wirklich gute Tutorial! Endlich mal einer, der erklärt, was Sache ist. Ich hatte (naja, wahrscheinlich habe ich noch...) null Ahnung von Bash-Scripts, aber das hier ist nun wirklich cool!

    War einfach ein Versuch ein bisschen Interesse an der bash zu Wecken kombiniert mit dem Erstellen eines Backups :) Das braucht man immer wieder unter Linux. Freut mich dass es Dein Interesse geweckt hat. Aber wie Du schon selbst geschrieben hast - es gibt noch vieles mehr in der bash zu entdecken ;)

    Zu 1) - Wenn Dich die Meldungen stören kannst Du sie unterdrücken. Dazu kann ich empfehlen Alles über bash redirections zu lesen.

    Zu 2) - Ich verstehe nicht warum Du eine Fortzschittsanzeige haben möchtest. Die kann man sicherlich einbauen. Aber eigentlich sollte ein Backup automatisch im Background unattended erstellt werden und da interessiert am Ende nur ob der Backup OK war oder failed. Die etwas umfassendere Scriptversion sendet deshalb auch am Ende des Backups eine eMail mit fail oder success.


  • Zu 2) - Ich verstehe nicht warum Du eine Fortzschittsanzeige haben möchtest. Die kann man sicherlich einbauen. Aber eigentlich sollte ein Backup automatisch im Background unattended erstellt werden und da interessiert am Ende nur ob der Backup OK war oder failed. Die etwas umfassendere Scriptversion sendet deshalb auch am Ende des Backups eine eMail mit fail oder success.

    Zugegeben: Das ist so'n Nice-To-Have-Gimmick, wenn ich das Script eben nicht über den Cronjob laufen lasse, sondern zum Testen manuell starte. Du hast natürlich recht: Der Regelfall ist eher der, dass das Script per Cronjob angeschmissen wird. Dann ist es eh egal, da das auch zu einer Zeit passiert, zu der ich garantiert nicht vor dem Raspberry Pi sitze und drauf warte, dass was passiert.

    So zum manuellen Testen wäre es schön, aber wenn das zuviel Mühe macht, lassen wir das besser :D

    Danke für den Tipp zu den unterdrückten Meldungen. Gott sei Dank sind es - nach einigen Tests und Umstellungen an den Parametern, die ich noch falsch hatte - wirklich nur noch Meldungen. Fehler gibt es keine mehr :-).

    Juchu :D

  • Ich hoffe, ich darf hier noch mal eine Frage zu diesem Thema stellen. Das Ganze hier hat mich so gepackt, dass ich mir das Bash-Script selber so'n bisschen erweitern möchte.

    Soweit klappt das ganz gut, aber leider auch nur zum Teil und der Satz oben "Fehler gibt es keine mehr" kann ich leider nicht mehr so stehen lassen :D.

    Ich möchte gerne zur Schonung des Raps die tar-Methode verwenden und lasse mich per Mail über den Erfolg oder auch Nicht-Erfolg informieren. Als Ausgabe des tar-Protokolls bekomme ich immer diese Fehlermeldung:

    tar: 1: kann stat nicht ausführen: datei oder verzeichnis nicht gefunden

    wobei dies hier mein Aufruf ist:

    tar -cpz --one-file-system -P -f ${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d-%H%M%S).tgz 1 2> /var/log/BackupLog/backup.log \

    tar wird also aufgerufen: i.O.
    das Dateisystem soll zumindest gebackupt werden, das erkennt er auch: i.O.
    das tar-File wird auch geschrieben (ist aber zu klein): FALSCH!
    das Logfile wird in den Ordner geschrieben: i.O.
    das Ergebnis wird mir per Mail mitgeteilt: i.O.
    Das Backup wird erfolgreich beendet: FALSCH!

    Ich befürchte, ich habe da mit der Parametrisierung irgendwas falsch, aber was???

    Könnt Ihr mir da bitte nochmal helfen? Vielen Dank im Voraus!

    Edited once, last by Dr.Sterni (November 11, 2014 at 12:51 AM).

  • Guten Abend an alle,

    ich möchte mir einen RasPi B+ als E-Mailserver einrichten (wie in c't Heft 17 2013).

    Da es bei uns im Hause einige E-Mail Konten gibt, und die Mails auf dem RasPi bleiben sollen, würde ich an den RasPi einen USB-Speicher hängen (was genau das sein wird, ist noch unklar, Wahl liegt zwischen einer SSD und einer HDD).

    Nun möchte ich von der SD-Card und dem USB-Speicher täglich, oder evtl. auch andere Zeitabständen, ein Backup auf meinen Windows-Home-Server speichern.
    So sollte mal der USB-Speicher defekt sein, ich das Backup der E-Mails noch habe.

    Nun habe ich aber die Frage, wie ich das mit dem Backup am besten hinbekomme.

    Hoffe mir kann jemand helfen!

  • @ framp:

    vorneweg: schon mal danke für die schnelle Antwort.

    bei Snapshot steht, das dieser ein Ziellaufwerk mit ext3/ext4 Formatierung braucht.

    möchte ja aber auf dem WHS in einen eigenen Ordner sichern.

    also:

    SD-Karte: nur Boot
    USB-Speicher: Raspian mit dem Mailserver UND den E-Mails
    der USB-Speicher wird wahrscheinlich eine 750GB WD RED Platte.
    Kann ich die Root-Partition auf 750GB aufblasen, um dann dort auch die Mails abzulegen?

    Beides sichern über LAN auf:

    WSH: eigener Ordner mit den Sicherungen, der RasPi erhält eigenes Benutzerkonto auf dem RasPi, bei der Angabe des Zielortes der Sicherung muss man also auch Username und PW eingeben können.

    funktioniert da rsnapshot??

    Was auch gehen müsste wäre:
    VOR dem Backup den WHS-Ordner Mounten
    NACH dem Backup: den WHS-Ordner UNMounten,
    der WHS läuft nicht 24/7!

    Wie das mit dem WHS gehen könnte habe ich dort evtl. gefunden...
    http://forum.fhem.de/index.php/topic,15880.0.html

    Edited once, last by marco1994 (November 19, 2014 at 8:53 PM).

  • Sorry für die späte Antwort. Die Updatbenachrichtigungsemail zu diesem Thread ist bei mir im Spamordner gelandet :-/ .

    Ja, rsnapshot benutzt rsync und das benutzt hardlinks wozu ein ext3/4 benötigt wird. Aber ich glaube ntfs kann auch hardlinks und was ich so beim schnellen Googeln gefunden habe scheint es so als könne man rsync auch auf WIndows unter cygwin laufen lassen. Allerdings bin ich kein Windowskenner und hatte deshalb rsync vorgeschlagen (hatte Dein WHS übersehen :blush: ). Ohne Hardlinks würde ich kein Backup machen, da dann ja jedesmal alles kopiert wird und Du dann bei 10 Backups den 10fachen Space benötigst.

    Vielleicht hat ja ein Windowskenner eine Idee wie man Dein Problem am besten lösen kann.

  • So, habe da noch ein paar fragen:

    1. Funktioniert rsnapshot auch mit einem Windows-Home-Server Ordner als Ziellaufwerk?

    2. geht das automatische Mounten des WHS-Ordners vor dem Backup und ebenso das unmounten nach dem Backup? der WHS ist nicht 24*7 in betrieb, oder macht das bei nem gemounteten Laufwerk nichts?

    3. Mir würde als "Backup" auch ein regelmäßiges, automatisiertes Kopieren der Daten (hauptsächlich der E-Mails) genügen! Gibt es einen Weg dies z.B. Täglich mittel Cronjob zu machen?´
    Wie könnte so ein Kopiervorgang als Cronjob aussehen?

    4. wo genau muss rsnapshot laufen?? auf dem Pi oder auf dem WHS?

    habe nun die 750GB HDD als "Systemlaufwerk" am Pi hängen.

    werde mal die Tage versuchen, den WHS-Ordner zu Mounten!

  • zu 1) - Ich denke schon dass es per samba geht. Bin aber kein Windowskenner und habe es noch nie probiert.
    zu 2) - Klar, da musst Du ein kleines bash Script schreiben welches das macht
    zu 3) - Klar, da musst Du das in 2 erstellte Script eben immer regelmäßig per cron aufrufen
    zu 4) - Auf der Pi

    Da dieses Thema jetzt in die Ecke WHS und Windows gehört und mit dem Tutorial nichts mehr zu tun hat schlage ich vor Du erstellst einen neuen Thread in dem das Thema weiter diskutiert wird. Du kannst ja einen Link dazu hier setzen, so dass alle Interessenten zu dem Thema Deinen neuen Thread leicht finden können. :)

  • Ich bin gerade dabei eine erweiterte Version von raspiBackup zu erstellen, die es auch ermöglicht NOOBs Images sowie Images mit mehr als zwei Partitionen als tar oder rsync Backups zu sichern und zu Restoren.

    Da das eine umfangreiche Erweiterung ist würde ich gerne die Betaversion zusätzlich noch zu meinen Tests von aktiven Benutzern von NOOBS testen lassen. Wäre gut wenn sich ein paar Betatester finden und hier melden würden :bravo2:

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!