Eu suspeito que, usando apenas o Unison, a resposta para sua pergunta é não . Em geral, é difícil dizer ao Unison para sincronizar ou não os arquivos / diretórios com uma propriedade que não pode ser especificada com algum tipo de correspondência de padrão em seu nome , como diretórios que são montagens de ligação ou links físicos no seu caso.
Não é correto dizer " por padrão, o unison usa o rsync para fazer a transferência ." O Unison usa o mesmo algoritmo / protocolo subjacente como rsync , mas usa sua própria implementação; o executável rsync
real não é chamado, portanto você não pode apelar para os recursos do executável rsync
e não conseguirá resolver seu problema dessa maneira. Embora se rsync
puder fazer isso, imagino que o Unison poderia fazer isso se alguém escrevesse o recurso.
Como você apontou, o Unison não entende os hard links, acho que você está sem sorte. Você pode ser capaz de usar um programa externo para ignorar inteligentemente as montagens de bind. Você pode usar o findmnt para listar os diretórios que são montagens de ligação e, em seguida, inserir a linha ignore = Path /path/to/bind/mount
no seu < href="http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#profile"> Perfil do Unison para cada montagem de ligação.
Além disso, como parece que você está pensando em fazer isso manualmente com um script ou algo assim, você deve estar ciente de inotify-tools .