Kopieren einer Liste mit Testpfaden zu Dateien in eine Liste mit Produktionspfaden zu Dateien

Kopieren einer Liste mit Testpfaden zu Dateien in eine Liste mit Produktionspfaden zu Dateien

Ich möchte eine Liste von Dateien in der Form test/path/to/file/filename.xyz in den entsprechenden Produktionspfad prod/path/to/file/filename.xyz kopieren. Wenn der Testpfad und der Produktionspfad bis auf das Vorhandensein von „prod“ anstelle von „test“ identisch sind, kann ich dann den folgenden Befehl verwenden? Wird dadurch die Zieldatei überschrieben?

$ xargs -I % --arg-file=input.txt cp /test/% /prod/%

Antwort1

Bearbeiten Sie input.txt so, dass es wie folgt aussieht (Beachten Sie das +):

+ /path/to/file/filename.xyz

Dann,

rsync -amv \
  --include '*/' \
  --include-from input.txt \
  --exclude '*' \
  test/ prod/

Sie können es auch direkt ausführen, indem Sie die Datei im laufenden Betrieb bearbeiten, zum Beispiel:

rsync -amv \
  --include '*/' \
  --include-from <(sed 's/^/+ /' input.txt) \
  --exclude '*' \
  test/ prod/

Möglicherweise müssen Sie den sedAusdruck Ihren Anforderungen entsprechend ändern.

verwandte Informationen