Backup wie Apple Time Machine

  • Hallo.


    Ich bin gerade dabei meinen Server von einem Mac Mini auf einen Raspberry Pi 3 umzustellen. Nun habe ich schon einiges fertig, bin aber schon seit einigen Tagen auf der Suche nach eine komfortablen Backuplösung ala Time Machine. Ich habe auf dem Pi Raspian ohne GUI laufen.

    Mein benötigtes Ziel wäre, dass bestimmte Pfade + Home Verzeichnis automatisch auf eine externe USB Platte gesichert werden. Das Backup soll automatisch starten, wenn ich die Platte anstecke. Sobald das Backup fertig ist, soll die Platte auch automatisch ausgeworfen werden. (Ist aber nicht muss)

    Und man muss auch Pfade aus dem Backup ausschließen. Gibt es sowas, bzw. hat sowas schon mal jemand gebaut?

    Ich denke da an ein Script mit rsync welches automatisch beim mounten der plate ausgeführt wird. Bin aber leider noch nicht so fit auf der console.


    Vielen Dank für eure Hilfe. :) :danke_ATDE:

  • Sali Gagy


    Herzliche willkommen im Forum.


    Für Backups gibt es x Anleitungen. ICh habe meine Backup Strategie selber geschriebne und die erfüllt meine Bedürfnisse voll und ganz.

    Eine fixfertige Backuplösung für den PI ist raspiBackup (einfach mal googlen) und kommst schon zur entsprechenden Wwebseite und kannst da mal kucken.


    Gruss Dani

  • Hallo gegy


    Jupp raspiBackup ist für Einsteiger sicherlich mal nicht schlecht. Habe ihn grad vor 2h eingerichtet. Habe jedoch bei raspiBackup keine Option gesehen die sowas wie "IF mounted start backup" ermöglicht. Da musst du wahrscheinlich selber Hand anlegen damit das so klappt. Aber wie gesagt kenne raspiBackup erst seit einigen Stunden. Evt gibts die Option sogar und ich hab sie einfach noch ned gefunden oder darüber gelesen. Dass es möglich ist bezweifel ich jedoch nicht :).


    Mittels crontab habe ich dann eingestellt dass 1x pro woche ein dd Backup durchgeführt wird welches dann komprimiert auf einem USB-Stick gespeichert wird. Du kannst auch eingeben wieviele Backups maximal erzeugt werden sollen (1-52). Danach soll der pi sich updaten und upgraden und anschliessend neu starten.


    Code
    1. 00 03 * * 0 /usr/local/bin/raspiBackup.sh -a -o
    2. 00 06 * * 0 root /usr/bin/apt-get update && /usr/bin/apt-get upgrade -q -y >> $
    3. 40 06 * * * /sbin/shutdown -r now

    Was hier noch fehlt ist die definition welche Services gestoppt werden sollen. Da bin ich mir noch nicht ganz sicher und muss da selber noch hinter die Bücher.


    Grüsse Apop

    Ich suche nicht nach einer fertigen Lösung sondern nach dem Weg dahin ;)

  • Hallo Leute, vielen Dank für eure Antworten. Nun:


    Quote

    Für Backups gibt es x Anleitungen.

    Du hast recht, mir sind schon x Anleitungen untergekommen. Keine macht das was ich brauche. Leider. :(


    Quote

    ICh habe meine Backup Strategie selber geschriebne und die erfüllt meine Bedürfnisse voll und ganz.

    Was genau hast du geschrieben? Zeitliches Backup ist nicht so schwer, aber eins was bei einstecken einer USB Platte startet ist wohl nicht so einfach.


    Quote

    Jupp raspiBackup ist für Einsteiger sicherlich mal nicht schlecht. Habe ihn grad vor 2h eingerichtet. Habe jedoch bei raspiBackup keine Option gesehen die sowas wie "IF mounted start backup" ermöglicht.

    Und genau das ist mein Problem. Ich ab mir raspiBackup bereits angesehen und es scheint wohl nicht die Möglichkeit zu geben das Backup zu starten wenn die Platte angestöpselt wird.


    Quote

    Mittels crontab habe ich dann eingestellt dass 1x pro woche ein dd Backup durchgeführt wird

    Eben mit Crontab möchte ich es nicht machen. Eine backupplatte oder einen stick dauerhaft angeschlossen zu haben, halte ich leider nicht für den richtigen weg, da die Backupplatte mitaltert. Normal müsste man ohnehin noch von der Backupplatte regelmäßig Backups machen.

    Aber im Prinzip ist dein Backup nicht so schlecht. Man müsste es halt nur noch so einstellen können, dass es getriggert wird, wenn man eine Platte am Pi ansteckt.

  • Und genau das ist mein Problem. Ich ab mir raspiBackup bereits angesehen und es scheint wohl nicht die Möglichkeit zu geben das Backup zu starten wenn die Platte angestöpselt wird.

    Erstelle eine UDEV-rule, die genau das macht.

    "WENN USB-Drive mit Serial=xxx angeschlossen wird, DANN starte /mein/backup.sh"

    Ansatz: http://blogs.fsfe.org/milch/30/autobackup-mit-udev/

    "Wenn du nichts zu sagen hast, sag einfach nichts!"

  • Aber im Prinzip ist dein Backup nicht so schlecht. Man müsste es halt nur noch so einstellen können, dass es getriggert wird, wenn man eine Platte am Pi ansteckt.

    Hallo gegy,


    dank mal um: nicht alle Programme müssen alles können, sie müssen im Idealfall nur ihre „Aufgabe“ so gut als möglich beherrschen. Und dann kannst Du als nächsten Schritt eine Verbindung herstellen.


    Deine Anforderung sollte sich mit einer udev - Regel und einem Backup(skript) lösen lassen.


    Gruß, STF

  • Die möglichkeit von udev hab ich auch schon gelesen, aber man soll angeblich udev nicht für prozesse verwenden, die länger andauern, weil dann udev das ganze system blockiert.

    Quote

    dank mal um: nicht alle Programme müssen alles können, sie müssen im Idealfall nur ihre „Aufgabe“ so gut als möglich beherrschen.

    Ich wollts mir mit dem Umstieg vom Mac Mini (bei dem es eine komfortable Lösung gibt) einfacher machen. Ja, ich bin gern bereit mir flexibel ein Backupscript mit rsync zusammen zu stellen, aber so wie es gerade aussieht gibts da nichts wirklich vernünftiges für meine Anforderung.

  • Hey gegy


    Ich habe noch diese Methode gefunden bei welcher die Stromversorgung der USB-Ports (einzeln oder alle) deaktiviert werden. So könntest du dein Speichermedium vor dem frühzeitigen altern schützen indem du ihm halt nur dann Strom gibst wenn du den Backupprozess durchführen willst. Das wäre jedoch dann auch mittels crontab und der Bedingung dass das Speichermedium immer angeschlossen bleibt.


    Grüsse Apop

    Ich suche nicht nach einer fertigen Lösung sondern nach dem Weg dahin ;)

  • Ok, ich hab nochmal über die Sache nachgedacht und glaube eine für mich passende Lösung gefunden zu haben:


    Ich erstelle einfach einen Cronjob, welcher ein-, oder zweimal die Woche ein rsync script laufen lässt. Die Idee mit dem Update und Neustarten vom Pi kann ich da auch noch einfließen lassen. Wenn nun keine Platte angeschlossen ist, sollte das script einfach abbrechen und gut ist.

    Irgendwann steck ich die Platte an und lasse sie dann halt ne Woche angesteckt. Dann brauch ich nicht nachdenken, wann das Backup nun läuft. Sollte so klappen, oder?

  • aber man soll angeblich udev nicht für prozesse verwenden, die länger andauern, weil dann udev das ganze system blockiert.

    Hast du da eine Quelle dafür? Letztlich sollte durch das Starten eines Jobs keine Blockade passieren.


    Gruß,STF

  • Ja und? Es steht doch auch dort, dass man solche Scripte abkoppeln (detach) soll. "disown" existiert oder eben das erwähnte "at now", wie man mag,

    "Wenn du nichts zu sagen hast, sag einfach nichts!"


  • Was genau hast du geschrieben? Zeitliches Backup ist nicht so schwer, aber eins was bei einstecken einer USB Platte startet ist wohl nicht so einfach.

    Guten Abend.


    Ganz Einfach.

    Meine Externe Festplatte hat einen Ordner und darin eine Dumy Datei.


    Nun läuft auf meinem Pi einfach ein Porgramm das in gewissen Abständen (bei mir sind es 24h) checkt ob die Datei virhanden ist, falls ja - wird das Backup gestartet falls nicht wird wieder 24 geschalfen.


    Ist nicht die eleganteste Lösung....


    Gruss Dani

  • Ich find die Lösung eigentlich sehr gut. Kommt mit wenig Zeilen Code aus und macht genau das was der OP beschrieben hat. Überleg mir ob ich das übernehmen soll :) (Abgesehen davon dass es nicht gleich auslöst, aber kann man ja vor dem Schlafen gehen einstöpseln und morgens wieder aushängen oder auf Minutentakt stellen und sobald backup gestartet wird den Service crontab stoppen, was ja auch empfohen ist.).

    Ich suche nicht nach einer fertigen Lösung sondern nach dem Weg dahin ;)

  • Hallo Dani,


    meinst du, du könntest mir dein script mal zeigen? :)

    Ich find die Lösung nämlich auch super!


    Lg

  • Code
    1. /usr/bin/test -r /pfad/zum/file && /pfad/zum/backup_script.sh


    Wenn file lesbar ist, dann starte backup_script.sh, sonst mache nichts.

    Das packst du in einen cron-Job und gut.


    file ist die Dummydatei (z.B. Backup_Present)

    "Wenn du nichts zu sagen hast, sag einfach nichts!"