Quiero mover algunos subconjuntos de archivos de dirA a dirB (digamos archivos con "blah" en el nombre del archivo), pero quiero que todos los directorios anidados sean iguales en la nueva ubicación. ¿Cómo puedo hacer eso?
directory-structure
file-copy
cstack
fuente
fuente
Respuestas:
La magia de
rsync
las reglas de filtro:Consulte la
rsync
pá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"fuente
Si necesita copiar estos archivos, cp hará:
La opción
--parents
conserva subdirecciones: crea la ruta completa del directorio para el destino.fuente
Esto funcionó para mí:
rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" [email protected]:/source/directory/ /destination/directory/
El
-e
conmutador define elrsync
protocolo 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!
fuente