Wie kann ich eine Teilmenge von Dateien aus einem Verzeichnis kopieren und dabei die Ordnerstruktur beibehalten?


Antworten:


9

Die Magie der rsyncFilterregeln:

$ rsync -av --filter="+ */" --filter="-! *blah*" /source /dest

Auf der rsyncManpage finden Sie Details zu Filterregeln. Hier ist jedoch die komprimierte Version für diesen speziellen Bedarf.

--filter="+ */" bedeutet "alles einschließen, was ein Verzeichnis ist"

--filter="-! *blah* bedeutet "alles ausschließen, was blah NICHT im Dateinamen enthält"


3

Wenn Sie diese Dateien kopieren müssen, reicht cp aus:

cd dirA
find . -iname "*blah*" | xargs -If cp --parents f dirB

Option --parentsbehält Unterverzeichnisse bei - es wird der vollständige Verzeichnispfad für das Ziel erstellt.


Die Syntax hier ist viel klarer als bei rsync
Matěj Šmíd

0

Das hat bei mir funktioniert:

rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" uid@555.55.555.55:/source/directory/ /destination/directory/

Der -eSwitch definiert das rsyncÜbertragungsprotokoll mit dem Port als -p 22. Außerdem sind die abschließenden /Schrägstriche wichtig, damit das Programm weiß, dass es sich um Verzeichnisse handelt.

Danke @pdo für die zusätzlichen Stunden an meinem Arbeitstag!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.