Ich möchte eine Teilmenge von Dateien von dirA nach dirB verschieben (sagen wir Dateien mit "blah" im Dateinamen), aber ich möchte, dass alle verschachtelten Verzeichnisse am neuen Speicherort gleich sind. Wie kann ich das machen?
directory-structure
file-copy
cstack
quelle
quelle
Antworten:
Die Magie der
rsync
Filterregeln:Auf der
rsync
Manpage 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"quelle
Wenn Sie diese Dateien kopieren müssen, reicht cp aus:
Option
--parents
behält Unterverzeichnisse bei - es wird der vollständige Verzeichnispfad für das Ziel erstellt.quelle
Das hat bei mir funktioniert:
rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" [email protected]:/source/directory/ /destination/directory/
Der
-e
Switch definiert dasrsync
Ü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!
quelle