Bash Programmierung: find und diff Befehl für Backup


  • FUNfried
  • 1090 Aufrufe 4 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Bash Programmierung: find und diff Befehl für Backup

    tach, schon wieder ich.
    Ich hätte gerne gewusst, wie ich zwei Festplatten miteinander vergleiche um so eine Art Backup-Script zu schreiben, ich hab den "diff" und den "find" schon getestet.
    Problem bei "find": mit find Quelle -newer Ziel find ich zwar alle Dateien, die auf der Quelle neuer sind als auf dem Ziellaufwerk und kann diese mit hilfe einer for-Schleife auch dementsprechend kopieren, aber ich finde damit keine Dateien, die noch nicht auf dem Ziellaufwerk vorhanden sind. Also kommen wir zu "diff".
    Problem bei "diff": mit diff Quelle Ziel werden mir zwar alle Dateien die nicht auf meinem Ziel vorhanden sind angezeigt, aber in dieser Form:
    Only in Quelle: datei
    Somit kann ich da keine kopier Schleife drüber laufen lassen.

    Was ich also bräuchte wäre so eine Art Mischung aus beidem, hat irgendjemand von euch ne Ahnung was ich machen soll?

    Damit ihr euch das alles etwas besser vorstellen könnt, so sieht's bis jetzt aus:

    Shell-Script

    1. #!/bin/sh
    2. #
    3. #backup.sh v.1.0
    4. #
    5. #
    6. #Konfiguration
    7. REMOTE_DIR=Quelle #Das Quellverzeichnis für das Backup
    8. BACKUP_DIR=Ziel #Das Zielverzeichnis für das Backup
    9. #
    10. #
    11. #
    12. for LINE in `find $REMOTE_DIR -newer $BACKUP_DIR` ; do
    13. cp $LINE $BACKUP_DIR
    14. done
    Alles anzeigen


    PS: Fall's das in das Coding-Forum gehört bitte ich um Verzeiung. Ich war mir nicht sicher, da es ja eigentlich Linux is.
  • mach doch einmal die aktualisierung mit find und dann die nächste zeile im script schreibst du das, was du mit diff machen wolltest in eine for-schleife:
    diff /quelle /ziel | sed 's;Only in Quelle/:;;'

    so wird es richtig formatiert, dass das "only in quelle" dort nicht auftaucht..

    gruß
    tuxi

    ps: poste mal das ergebnis
  • Danke für den Tipp, mir ist nur gerade aufgefallen, dass ich mit diff nichts anfangen kann, da der diff Befehl die komplette Datei vergleicht und ich ziemlich große Daten hab, da würde das glaub ich ewig dauern. Vielleicht kennst du oder jemand anderes noch ein Befehl, der das Existieren von Dateien abprüft.
  • Ich weiss nicht, wozu die Skripte gut sein sollen. Um ein Backup zu machen, gibt es ja diverse Werkzeuge unter Linux (tar, dump, taper und so weiter).

    Wenn du einfach nur per copy-Befehl ein Backup machen willst: auch das gibts schon: cp -a quellordner zielordner
    Dadurch werden alle neuen oder geänderten Dateien zum Zielordner kopiert, der natürlich auch auf einer anderen Platte liegen kann.

    Vielleicht helfen dir ja diese Möglichkeiten bereits.

    Grüße
    Michael
  • Danke, hätt ich das mit dem cp -a früher gewusst, hätt ich mir ne Menge Zeit erspart, aber ich hab's leider erst gerade gelesen. Der Sinn hinter diesem Backup ist eine Kopie eines tar-Backups auf eine externe Festplatte, damit in einem Brandfall oder Wasserschaden die Daten noch vorhanden sind. Danke nochmal vielleicht schreib ich mein Script ja nochmal um.

    Kann GESCHLOSSEN werden.