• Kann mir mal jemand bei einem rsync-Befehl helfen?

    ich würde gerne mit einem rync-einzeiler (oder shell script) den Inhalt eines Ordners in einen anderen (auf einem anderen Mac) kopieren mit höchstmöglicher sicherheit (verifiziertes lesen/schreiben), aber ohne objekte im Zielordner zu löschen. Ich hätte aber AUCH gerne, dass Dateien, die sich auf der Quelle geändert haben auf dem Ziel mit der neueren Version überschrieben werden. Also zum beispiel:

    vor dem Kopieren:

    QUELLE
    Datei/Ordner A
    Datei/Ordner X
    Datei/Ordner Y (neuer)

    ZIEL
    Datei/Ordner A
    Datei/Ordner B
    Datei/Ordner Y (älter)

    Nach dem kopiervorgang sollte das so aussehen:

    QUELLE
    Datei/Ordner A
    Datei/Ordner X
    Datei/Ordner Y (neuer)

    ZIEL
    Datei/Ordner A
    Datei/Ordner B
    Datei/Ordner X
    Datei/Ordner Y (neuer)

    Also:

    A hat sich nicht geändert, wurde also nix kopiert
    B gibts nicht auf der Quell-platte, wurde also auf dem Ziel ignoriert (nicht!!! gelöscht)
    X kam neu dazu, wurde also kopiert
    Y hat sich auf der quelle geändert, überschreibt also die älter Version auf dem ziel

    Ist das mit rsync machbar? Danke, fby
    • ich hatte mir vor langer Zeit mal so geholfen...

      Show Plain Text
      1. #!/bin/sh
      2.  
      3. #Zu sicherndes Verzeichnis:
      4. a="/Volumes/HD_Name/"
      5.  
      6. #Backupvolume:
      7. b="/Volumes/backup/HD_Backup"
      8.  
      9. #Anzahl der inkrementellen Backups
      10. c=3
      11.  
      12. #Existiert das BackupVolume?
      13.  
      14. if [ -d $b ]; then
      15.         echo "" > /dev/null
      16. else
      17.         exit
      18. fi
      19.  
      20. # Backup-Verzeichnisse erstellen, falls sie nicht existieren
      21. e=$c
      22. while [  $e -gt 0 ]; do
      23. let e=e-1
      24. if [ -d $b/backup.$e ]; then
      25.         echo "" > /dev/null
      26. else
      27.         mkdir $b/backup.$e
      28. fi
      29. done
      30.  
      31. # Datum aufzeichnen (Beginn)
      32. touch $b/backup.log
      33. /bin/echo "Backup begonnen um:" >> $b/backup.log
      34. /bin/date >> $b/backup.log
      35.  
      36. # Backup-Verzeichnisse rotieren
      37. let c=c-1
      38. d=$c
      39. rm -rf $b/backup.$c
      40. while [  $c -gt 1 ]; do
      41.         let d=$c
      42.         let c=c-1
      43.         mv $b/backup.$c $b/backup.$d
      44. done
      45. let d=d-1
      46. let c=c-1
      47. cd $b/backup.$c && find . -print | cpio -dpl ../backup.$d
      48.  
      49. # Den eigentlichen Backup-Prozess starten
      50. /usr/bin/rsync -aE --delete --exclude=.Spotlight-V100 $a $b/backup.0/
      51.  
      52. # Datum aufzeichnen (Ende)
      53. /bin/echo "Backup beendet um:" >> $b/backup.log
      54. /bin/date >> $b/backup.log
      55. /bin/echo "--------------------------------------" >> $b/backup.log
      56.  
      57. # Datum von backup.0 in eine Datei sichern
      58. /bin/date > $b/backup.0/datum


      das ist schon ne Weile her und ich weiss nicht, ob es so noch funktioniert.
      ----------
      Runtime Error 6D at 417A:32CF: Incompetent User