Come posso copiare un sottoinsieme di file da una directory preservando la struttura delle cartelle?


Risposte:


9

La magia delle rsyncregole del filtro:

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

Consulta la rsyncpagina man per i dettagli sulle regole di filtro, ma ecco la versione ridotta per questa particolare esigenza.

--filter="+ */" significa "includi tutto ciò che è una directory"

--filter="-! *blah* significa "escludi tutto ciò che NON include blah nel nome del file"


3

Se devi copiare questi file cp farà:

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

L'opzione --parentsconserva i sottodirectory: crea il percorso completo della directory per la destinazione.


la sintassi qui è molto più chiara di rsync
Matěj Šmíd l'

0

Questo ha funzionato per me:

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

Lo -eswitch definisce il rsyncprotocollo di trasferimento con porta come -p 22. Inoltre, le /barre finali sono importanti per far sapere al programma che ha a che fare con le directory.

Grazie @pdo per le ore extra della mia giornata di lavoro!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.