Com o GNU cp você pode usar a opção --parents
, assim:
cd /home/user/myfiles ; cp --parents */*/*.jpg /home2/user/myfiles/
Você precisa cd
primeiro, porque se você usar cp --parents /home/user/myfiles/...
, ele criará esses pais também e você terá /home2/user/myfiles/home/parents/myfiles/
.
Se você precisar de uma resposta não-GNUish, o método tradicional unix seria tar sobre um pipe.
cd /home/user/myfiles ; tar cf - */*/*.jpg | ( cd /home2/user/myfiles ; tar xf - )
O segundo cd
está em um subshell com o segundo tar, então é onde os arquivos são extraídos. O tarball em si é criado, enviado pelo pipe e extraído tudo ao mesmo tempo. Adicione um sinalizador v
a um dos tars se quiser um relatório de andamento.