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 sed
Ausdruck Ihren Anforderungen entsprechend ändern.