O rsync permite especificar padrões que acionam a inclusão ou exclusão de arquivos e diretórios. Eu acho que você quer usar algo assim:
rsync -a -f '- /*/*/' /dirA/ host:/dirB/
Explicação:
-
-a
aciona o modo de arquivo que ativa a recursão e a preservação de "links, dispositivos, atributos, permissões, propriedades, etc. simbólicos", de acordo comman rsync
. -
-f
é a abreviação de--filter=
, que adiciona uma regra de filtragem de arquivos.- O padrão está dentro de aspas simples, de forma que o shell não expanda curingas; aspas duplas funcionariam igualmente bem neste caso.
-
-
significa que este é um padrão de exclusão. - O principal
/
significa que o padrão deve começar emdirA/
(o rsync "transferência-raiz"). - A parte
*/*
do padrão refere-se a qualquer item dentro de um subdiretório. - O
/
à direita limita a exclusão aos diretórios. Os arquivos dentro de um subdiretório dedirA/
não são afetados.
Assim, no final, o rsync copia nada mais do que um nível abaixo (e também não cria diretórios de segundo nível).