it-swarm.com.de

Eingaben aus einer Datei lesen und entsprechend synchronisieren

Ich habe eine Textdatei, die die Liste der Dateien und Verzeichnisse enthält, die ich kopieren möchte (eine in einer Zeile). Jetzt möchte ich, dass rsync diese Eingabe aus meiner Textdatei übernimmt und sie mit dem von mir angegebenen Ziel synchronisiert.

Ich habe versucht, mit den Optionen "--include-from=FILE" Und "--file-from=FILE" Von rsync herumzuspielen, aber es funktioniert einfach nicht

Ich habe auch versucht, "+" In jeder Zeile meiner Datei vorab zu reparieren, aber es funktioniert immer noch nicht.

Ich habe versucht, mit verschiedenen Filtermustern zu kommen, wie in der rsync-Manpage beschrieben, aber es funktioniert immer noch nicht.

Könnte mir jemand die richtige Syntax für diesen Anwendungsfall geben. Ich habe über Dinge auf Fedora 15, RHEL 6.2 und Ubuntu 10.04 versucht und keiner hat funktioniert. Mir fehlt also definitiv etwas.

Danke vielmals.

36
slayedbylucifer

Es gibt mehrere Möglichkeiten, diese Frage zu beantworten, je nachdem, wie Sie diese Dateien kopieren möchten. Wenn Sie die Dateiliste mit absoluten Pfaden kopieren möchten, sieht sie möglicherweise folgendermaßen aus:

rsync -av --files-from=/path/to/files.txt / /destination/path/

... Dies würde erwarten, dass die Pfade relativ zum Quellspeicherort von / Sind und die gesamte absolute Struktur unter diesem Ziel beibehalten.

Wenn Sie alle Dateien in der Liste an das Ziel kopieren möchten, ohne eine Pfadhierarchie beizubehalten (nur eine Sammlung von Dateien), können Sie eine der folgenden Methoden ausprobieren:

# note this method might break if your file it too long and
# exceed the maximum arg limit
rsync -av `cat /path/to/file` /destination/

# or get fancy with xargs to batch 200 of your items at a time
# with multiple calls to rsync
cat /path/to/file | xargs -n 200 -J % rsync -av % /destination/

Oder eine for-Schleife und Kopie:

# bash Shell
for f in `cat /path/to/files.txt`; do cp $f /dest/; done
69
jdi

Bei gegebener Dateiliste $ HOME/GET/bringemback enthält

**need/A
alsoneed/B
shouldget/C**

cd $ HOME/GET

lauf

rsync -av --files-from=./bringemback [email protected]:. $HOME/GET/collect

würde die Dateien bekommen und sie in $HOME/GET/collect

$HOME/GET/
          collect/
                  need/A
                  alsoneed/B
                  shouldget/C

oder so glaube ich.

hilfreich

6
helpful

rsync unterstützt dies nativ:

rsync --recursive -av --files-from=/path/to/files.txt / /destination/path/

4
egafni