Rsync dos tipos de archivos en un comando?

13

¿Cómo escribirlos en una línea, también sin repetir el mismo camino?

rsync -a root@somewhere:/folder/remote/*.txt .
rsync -a root@somewhere:/folder/remote/*.jpg .
Cheng
fuente

Respuestas:

18

Lo escribiría así:

rsync -a root@somewhere:/folder/remote/*.{txt,jpg} .
Gert
fuente
77
Esta es una técnica general que puede usar con cualquier comando. El shell repetirá el argumento, reemplazando la expresión de llaves con cada elemento de la lista. Se llama expansión de aparatos ortopédicos
Shawn J. Goff
11
rsync -a --include='*.txt' --include='*.jpg' --exclude='*' root@somewhere:/folder/remote/ .

(Tenga en cuenta que la final /en /folder/remote/, y la colocación de --exclude='*'después de la incluyen reglas, son importantes.) En conchas que la expansión del soporte de apoyo (por ejemplo, golpe del ksh, zsh):

rsync -a --include='*.'{txt,jpg} --exclude='*' root@somewhere:/folder/remote/ .

Agregue --include='*/' --prune-empty-dirssi desea copiar archivos en subdirectorios también.

Gilles 'SO- deja de ser malvado'
fuente
rsync 3 * parece fallar en * comodines, sin embargo, incluir | excluir funciona bien.
briankip