¿Cómo puedo copiar un subconjunto de archivos de un directorio mientras se preserva la estructura de carpetas?


Respuestas:


9

La magia de rsynclas reglas de filtro:

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

Consulte la rsyncpágina de manual para obtener detalles sobre las reglas de filtro, pero aquí está la versión condensada para esta necesidad particular.

--filter="+ */" significa "incluir todo lo que es un directorio"

--filter="-! *blah* significa "excluir todo lo que NO incluye bla en el nombre de archivo"


3

Si necesita copiar estos archivos, cp hará:

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

La opción --parentsconserva subdirecciones: crea la ruta completa del directorio para el destino.


la sintaxis aquí es mucho más clara que rsync
Matěj Šmíd

0

Esto funcionó para mí:

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

El -econmutador define el rsyncprotocolo de transferencia con el puerto como -p 22. Además, las /barras diagonales finales son importantes para que el programa sepa que se trata de directorios.

¡Gracias @pdo por las horas extra en mi día de trabajo!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.