O uso de regras simples de --include
e --exclude
não funcionará aqui. Mas o rsync também oferece --filter
.
Acho que rsync -ruvpgot --filter '+ *.java' certain_sub/ dest/
fará o que você quer, ou seja. copia todos os diretórios, mesmo os vazios, mas dentro dos diretórios apenas os arquivos correspondentes ao padrão "* .java" são copiados. Veja mais exemplos de man rsync
sob o cabeçalho REGRAS DE FILTRO.