Jörg: rsync auf Server intern durchführen?

Hallo,

kann man rsync auch auf dem Server, bezogen auf 2 Verzeichnisse ausführen oder gibt der copy-Befehl das her?

Beispiel:

Von meinem Testserver führe ich folgenden rsync aus:

rsync -asv --no-p --chmod=ugo=rwX \
--exclude=test  \
--exclude=test2 \
./xampp/htdocs/v1/ ftp_blablub@example.org:p8/v2/;

und synchronisiere so mein lokales v1-Verzeichnis mit dem serverseitigen v2-Vereichnis, ausgehend von der Basis "lokal v1".

Angenommen, ich habe auf dem Server ein v3-Verzeichnis und möchte auf dieselbe Weise und incrementel das v2-Verzeichnis mit dem v3-Verzeichnis synchronisieren (ausgehend von der Basis "server-v3", wie mache ich das dann?

Hintergrund: Ich muss viele Daten auf dem Server kopieren, aber während des Kopiervorgangs kann sich das Original insofern ändern, als das ggf. Dateien im Original hinzu kommen. Deshalb würde eich das gerne nach Abschluss der Kopien nochmal kontrollieren und die Kopien dann ergänzen.

Jörg

  1. Bei rsync kann sowohl das Ziel also auch die Quelle lokal oder entfernt sein.

    Also bevorzugt:

    ssh user@example.org
    rsync --Optionen /quelle /ziel
    

    oder (da geht aber womöglich alles durchs Netz...)

    rsync --Optionen user@example.org:/quelle user@example.org:/ziel
    
    1. Hallo Willi,

      Bei rsync kann sowohl das Ziel also auch die Quelle lokal oder entfernt sein.

      Wunderbar. Das wußte ich nicht, danke.

      Also bevorzugt:

      ssh user@example.org
      rsync --Optionen /quelle /ziel
      

      Sehr gerne.

      oder (da geht aber womöglich alles durchs Netz...)

      rsync --Optionen user@example.org:/quelle user@example.org:/ziel
      

      Nö, ich kann Option 1 anwenden, das passt. 👍

      Gruß, Jörg

  2. Hallo,

    noch ne Frage zu rsync:

    Wenn ich ein Verzeichnis mit vielen Unterverzeichnissen habe, aber nur z.b. 3 verzeichnisse snchronisieren will, wäre es ja unsinnig, mit der Option --exclude= alle nicht gewünschten Verzeichnisse heraus zu nehmen.

    Wie genau funktioniert aber die --include= Option?

    Reicht sowas hier oder habe ich die --include da missverstanden?

    rsync -asv --include=test1 --include=test2 /source/ /dest/;
    

    Würden hier alle Verzeichnisse in /source/ excludiert, bis auf test1 und test2?

    Jörg

    1. Der Trick ist, das Eltern-Verzeichnis erst auszuschließen, dann die Subdirs einzuschließen.

      /parent_dir
            +- subdir_1
            +- subdir_2
            +- subdir_3
            +- subdir_4
      

      Aufgabe:

      /parent_dir/subdir_1 und /parent_dir/subdir_2 sollen syncronisiert werden, nicht aber /parent_dir/subdir_3 und /parent_dir/subdir_4.

      Lösungen:

      rsync --Options --exclude /parent_dir --include /parent_dir/subdir_1 --include /parent_dir/subdir_2 …
      

      oder (oft besser)

      file: excludes.list

      /parent_dir
      

      file: includes.list

      /parent_dir/subdir_1
      /parent_dir/subdir_2
      

      und dann:

      rsync --Options --exclude-from='excludes.list' --include-from='includes.list' …
      

      So. (Vorläufig) letzter Hitzetag: Auf zum See. Wozu sonst hab ich denn heute „homeoffice“?

      1. Hallo Willi,

        ok, ich habe eine noch bessere Idee.

        Eigentlich können sich jetzt nur eine Hand voll Dateien ändern oder hinzu gesellen.

        .txt .jpg .JPG .jpeg .JPEG .gif .GIF .pdf

        Das wars eigentloch schon.

        Kann ich rsync denn sagen, das es nur diese Endungen berücksichtigen soll?

        rsync -a --include '*/' --include '*.mp3' --exclude '*' source/ target/
        

        Wie definiert man hier mehrere Endungen?
        Alle über --include oder kann man die alle in einer include-option gebündelt angeben?

        1. man rsync „sagt“:

          --exclude=PATTERN        exclude files matching PATTERN
          --exclude-from=FILE      read exclude patterns from FILE
          --include=PATTERN        don't exclude files matching PATTERN
          --include-from=FILE      read include patterns from FILE
          

          Da steht „Pattern“. Das geht also.

          Bin weg.