Linux Backup Script

  • Vor ungefähr einem Jahr, habe ich einen Backupscript gepostet. Den habe ich nun noch etwas erweitert. Die neue Funktion erlaubt es ein Verzeichniss zu überwachen und alle Änderungen sofort zu sichern (differentel Backup):

  • Sieht nett aus.. ausser dass die root UID als Variable gespeichert wird. Ist die nicht immer 0?

    Die Diff-Funktion scheint im Code ganz nett, ist mir allerdings etwas zu unübersichtlich. Muss schauen, evtl. überleg ich mir nen Backupscript auf Basis von git zu bauen.

  • Zitat von gandro

    Sieht nett aus.. ausser dass die root UID als Variable gespeichert wird. Ist die nicht immer 0?

    Muss erstens nicht sein, zweitens könntest du ja nen anderen priviligierten User haben, der alles darf was man tun muss, aber doch etwas eingeschränkt ist, und das ROOT_UID=0 durch etwas anderes ersetzten. Diese Überprüfung habe ich vom Advanced Bash Scripting Guide abgekuckt.

    Zitat


    Die Diff-Funktion scheint im Code ganz nett, ist mir allerdings etwas zu unübersichtlich.


    Naja, ist relativ simpel, wenn ein File vorhanden ist und geändert wurde, wird geprüft ob es ein Textfile ist. Wenn ja wird Zeilenweise verglichen, und die Unterschiede, welche mir diff als Output zurück gibt, wird in ein File geschrieben, womit später mit patch ein restore gemacht werden kann. Wenn nicht muss der Script mit dem Parameter -nt gestartet worden sein, damit auch z.B. PDF-Files gebackupt werden.

    Zitat

    Muss schauen, evtl. überleg ich mir nen Backupscript auf Basis von git zu bauen.

    Bin gespannt auf deinen Ansatz.

  • Zitat von chessboi

    Bin gespannt auf deinen Ansatz.


    Naja, falls ich was mache.

    Der Ansatz wäre im Grunde ganz einfach:
    Ich lass ein leeres git Repository auf dem Backupmedium anlegen. Dann werden da regelmässig Backups reingemacht (d.h. die Dateien überschrieben). Jedes mal wenn die frischen Backups reinkopiert mache, lasse ich einen git commit machen, der sieht was verändert wurde, und speichert die diffs inkl. Kommentar und z.B. Zeitstempel ab.

    Danach kann ich von allen oder bestimmten Datien dann ohne Problem frühere Versionen betrachten, habe einen Log was wann geändert wurde und kann gegebenenfalls natürlich auch neue Dateien durch alte Versionen ersetzen.

    Allerdings taugt da eher nicht für grosse Binärdateien, sondern eher für Konfigurationsdateien und Dokumente.
    Nicht weil git dafür zu langsam wäre, sondern zuviel Speicherplatz verbrauchen würde.

  • Zitat von gandro

    Allerdings taugt da eher nicht für grosse Binärdateien, sondern eher für Konfigurationsdateien und Dokumente.
    Nicht weil git dafür zu langsam wäre, sondern zuviel Speicherplatz verbrauchen würde.

    Jup, und ansonsten kannst du auch gleich eine Snapshotfunkton von einem Filesystem (es gibt ja genügend) gebrauchen ...

    git hat doch aber sicher die Möglichkeit wie bei SVN Filenamen welche auf bestimmte Patterns matchen auszuschliessen? Ist dann halt Namen basiert, sowas wollte ich zuerst auch machen, doch weil mir die Definierung was jetzt kopiert werden soll und was nicht, bin ich halt einfach auf den Mime-Type gegangen.

  • Grundsätzlich gibst du bei git am Anfang an, welche Dateien er überwachen soll. Danach kannst du Dateien bzw. Änderungen hinzufügen oder löschen. Und es gibt selbstverändlich Exclude-Listen mit Patterns (damit die auch nicht in der Liste der "untracked files" erscheinen).

Jetzt mitmachen!

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