--files-from=FILE
Mit dieser Option können Sie die genaue Liste der zu übertragenden Dateien angeben (wie aus der angegebenen DATEI gelesen oder - für die Standardeingabe). Außerdem wird das Standardverhalten von rsync optimiert, um die Übertragung nur der angegebenen Dateien und Verzeichnisse zu vereinfachen:
Die Option --relative (-R) ist impliziert, wodurch die Pfadinformationen erhalten bleiben, die für jedes Element in der Datei angegeben sind (verwenden Sie --no-relative oder --no-R, wenn Sie dies deaktivieren möchten).
Die Option --dirs (-d) ist impliziert, wodurch Verzeichnisse erstellt werden, die in der Liste am Ziel angegeben sind, anstatt sie geräuschvoll zu überspringen (verwenden Sie --no-dirs oder --no-d, wenn Sie dies deaktivieren möchten).
Das Verhalten der Option --archive (-a) impliziert nicht --recursive (-r). Geben Sie es daher explizit an, wenn Sie dies wünschen.
Diese Nebenwirkungen ändern den Standardstatus von rsync, sodass die Position der Option --files-from in der Befehlszeile keinen Einfluss darauf hat, wie andere Optionen analysiert werden (z. B. -a funktioniert vor oder nach --files- gleich). von, wie --no-R und alle anderen Optionen).
Die Dateinamen, die aus der DATEI gelesen werden, beziehen sich alle auf das Quellverzeichnis. Alle führenden Schrägstriche werden entfernt und es dürfen keine ".." - Referenzen höher als das Quellverzeichnis sein. Nehmen Sie zum Beispiel diesen Befehl:
rsync -a --files-from=/tmp/foo /usr remote:/backup
Wenn / tmp / foo die Zeichenfolge "bin" (oder sogar "/ bin") enthält, wird das Verzeichnis / usr / bin als / backup / bin auf dem Remote-Host erstellt. Wenn es "bin /" enthält (beachten Sie den abschließenden Schrägstrich), wird auch der unmittelbare Inhalt des Verzeichnisses gesendet (ohne dass dies in der Datei explizit erwähnt werden muss - dies begann in Version 2.6.4). In beiden Fällen würde, wenn die Option -r aktiviert wäre, auch die gesamte Hierarchie dieses Verzeichnisses übertragen (beachten Sie, dass -r explizit mit --files-from angegeben werden muss, da dies nicht durch -a impliziert wird). Beachten Sie auch, dass die (standardmäßig aktivierte) Option --relative nur die Pfadinformationen dupliziert, die aus der Datei gelesen werden - die Duplizierung des Quellspezifikationspfads (in diesem Fall / usr) nicht erzwingt. .
Darüber hinaus kann die Datei --files-from vom Remote-Host anstelle des lokalen Hosts gelesen werden, wenn Sie vor der Datei ein "host:" angeben (der Host muss mit einem Ende der Übertragung übereinstimmen). Als Abkürzung können Sie nur das Präfix ":" angeben, um "das entfernte Ende der Übertragung verwenden" zu bedeuten. Beispielsweise:
rsync -a --files-from=:/path/file-list src:/ /tmp/copy
Dies würde alle Dateien kopieren, die in der Datei / path / file-list angegeben sind, die sich auf dem Remote-Host "src" befindet.
Wenn die Optionen --iconv und --protect-args angegeben sind und die Dateinamen --files-from von einem Host zu einem anderen gesendet werden, werden die Dateinamen vom Zeichensatz des sendenden Hosts in den Zeichensatz des empfangenden Hosts übersetzt.
ANMERKUNG: Durch das Sortieren der Liste der Dateien in der Eingabe --files-from wird rsync effizienter, da die Pfadelemente, die von benachbarten Einträgen gemeinsam genutzt werden, nicht erneut aufgerufen werden. Wenn die Eingabe nicht sortiert ist, werden einige Pfadelemente (implizite Verzeichnisse) möglicherweise mehrmals gescannt, und rsync macht sie schließlich rückgängig, nachdem sie in Dateilistenelemente umgewandelt wurden.