A opção -l
( -links
) está implícita em -a
( --archive
), mas você também precisa de -K ( --keep-dirlinks
) para que os diretórios de destino possam ser links simbólicos. Você pode achar que também precisa de --delete-before
para corrigir a estrutura existente.
rsync -avKP --delete --ignore-errors src/ 192.168.0.75:dst/
Olhando mais de perto o seu código original, você está interagindo com o que eu vejo agora é o nível superior do seu servidor, incluindo /bin
e /usr
. Nesse caso, /bin
é um link simbólico para /usr/bin
, mas seu código passa isso para rsync
com $i/
, o que equivale a /bin/
. Portanto, rsync
nunca vê isso como um link simbólico porque seu $i/
já o referenciou.
Remover o seu for
loop e deixar o rsync
manipular a própria árvore de diretórios permitirá que ele veja o link simbólico de nível superior e o transfira corretamente.