Use rsync para copiar todos los archivos, excepto ciertos nombres de archivo con cierta extensión

28

Tengo dos tarjetas flash del mismo tamaño y quiero copiar el contenido de una a la otra según las siguientes reglas:

  1. Quiero todos los directorios y subdirectorios en su lugar
  2. Quiero excluir archivos de tipo .FOO, .BAR y .ZIM (todos los demás archivos se copian)
  3. Bonificación: sería genial si genera los nombres de los archivos a medida que se copian, ya que copiará ~ 8 GB de información

¿Podría hacerse esto con "encontrar" de alguna manera?

macek
fuente

Respuestas:

41

Esto sería significativamente más fácil usando rsync con su --excludeinterruptor.

rsync -av --exclude='*.FOO' --exclude='*.BAR' --exclude='*.ZIM' /source /dest

El -vconmutador proporcionará una salida detallada sobre qué archivos se están sincronizando.

John T
fuente
Poco seguimiento aquí: la copia finalizó y / src / * ahora está en / dest / src / * ¿Cómo usar rsync para obtener / src / * en / dest / *?
macek
Prueba/source/ /dest
John T
Esto no funciona Todavía estoy viendo archivos * .FOO copiados.
Jake
Se especifica cómo debe dar la ruta --exclude. Si tienes problemas con esto, mira esta respuesta .
totymedli
0

Si tiene una gran cantidad de extensiones para excluir, puede hacer un archivo y escribir toda la extensión o archivo para excluir y usar solo una opción de exclusión para hacerlo simple.

rsync -ravz --exclude = '. / abc, txt' / source / dest

Siempre es bueno usar z para la compresión y la opción r si tiene que copiar de forma recursiva.

amit singh
fuente