Uma maneira seria modificar os nomes de arquivos que você obtém ao executar o find. Então, no seu loop, tendo um nome de arquivo encontrado em $ filename, você deve:
- Em $ filename, substitua o $ i inicial por nada
- descubra o $ dir_name no resultado de 1 usando dirname
- acrescente um $ copyLocation final a $ dirname e use-o como argumento para mkdir -p para criar diretórios ausentes
- copie $ filename para "$ copyLocation / $ dirname"
Também vou sugerir outra alternativa de sincronização de arquivos: uníssono . É mais fácil de usar do que o rsync.