Lars: rsync - quelle aus datei

Hallo,

ich versuche gerade ein rsync durchzuführen das die Quelldaten aus einer Datei liest statt live aus einem Ordner. Das funktioniert soweit auch, aber ich aber ein Problem:
In meiner Quelldatei sind zeilenweise Ddateien und Ordner gemischt.
/pfad/pfad/ordner
/pfad/pfad/ordner/datei
Wenn rsync so eine Zeile liest die nur den Pfad zu einem Ordner enthält dann synct es den kompletten Ordnerinhalt. Das ist aber nicht gewollt, es soll nur angegebene Dateien syncen.
Ich kann im Grunde prüfen ob so eine Zeile enthalten ist und eine neue Datei mit reinen Dateien erstellen, allerdings kann es auch vorkommen das es leere Ordner gibt die gesynct werden sollen, die würde ich dann auch weglassen.
Als rsync Optionen verwende ich momentan: -lptgoD -d
Was ist hier der beste Weg?
Danke,
Lars

  1. Tach.

    ich versuche gerade ein rsync durchzuführen das die Quelldaten aus einer Datei liest statt live aus einem Ordner.

    Dafür benutzt Du doch sicher --files-from, richtig?

    Wenn rsync so eine Zeile liest die nur den Pfad zu einem Ordner enthält dann synct es den kompletten Ordnerinhalt. Das ist aber nicht gewollt, es soll nur angegebene Dateien syncen.

    Wenn Du es nicht explizit angibst (entweder durch -r oder durch abschließende Slashes an den Verzeichnisnamen), macht rsync das nicht.

    allerdings kann es auch vorkommen das es leere Ordner gibt die gesynct werden sollen, die würde ich dann auch weglassen.

    Wenn Du keine speziellen Anweisungen (siehe oben) gibst, sollte rsync bereits genau das tun, was Du willst: in der Liste enthalteten Verzeichnisse erstellen, deren Inhalt aber nicht automatisch kopieren. Ich habe das gerade mit rsync 3.0.6 ausprobiert:

    ~$ cat syncsrc.txt
        /bin
        /lib/init/vars.sh
        /etc/emacs/

    ~$ rsync -n -v --files-from=syncsrc.txt / .
        building file list ... done
        bin/
        etc/
        etc/emacs/
        etc/emacs/site-start.el
        etc/emacs/site-start.d/
        lib/
        lib/init/
        lib/init/vars.sh

    sent 177 bytes  received 36 bytes  426.00 bytes/sec
        total size is 949  speedup is 4.46 (DRY RUN)

    Beachte in der Liste den Slash hinter /etc/emacs. Der führt dazu, daß der Verzeichnisinhalt kopiert wird. Bei /bin hingegen passiert das nicht, da dort der abschließende Slash fehlt.

    Was ist hier der beste Weg?

    Den kompletten Aufruf, den Du verwendest, hier posten und auch den Teil Deiner Liste, bei dem Deine Probleme auftreten.

    --
    Always remember that you are unique. Just like everybody else.