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.