O Unison pode ser feito para ignorar montagens de bind ou hard links?

1

Estou procurando a melhor maneira de sincronizar meu diretório pessoal de e para uma unidade USB de 120 GB. O problema é que eu uso montagens de bind (que eu não quero ser seguido) e hard links (que eu faço quer ser preservado ). O Rsync pode fazer isso, mas é um direcional, enquanto eu tenho alterações em ambos os lados.

O Unison parece poder manipular de forma inteligente a sincronização bidirecional, mas não consigo encontrar nenhuma opção para restringi-lo a um sistema de arquivos ou ignorar montagens de ligação e a documentação diz " Unison não entende links físicos ". No entanto, por padrão, o uníssono usa o rsync para fazer sua transferência. Existe uma maneira de usar o entendimento do rsync de hard links e bind mounts?

Como alternativa, alguém pode me indicar um exemplo de sincronização bidirecional manualmente usando rsync e diff? Ou algo semelhante?

Observação: Eu usei o FreeFileSync no passado, mas algo deu errado e quase perdi meus arquivos e backup! Foi possivelmente minha culpa, mas agora estou com medo de usar o FreeFileSync.

    
por Jesse the Wind Wanderer 30.09.2018 / 09:13

1 resposta

2

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 .

    
por 30.09.2018 / 18:29