Como eu faço o Unison se comportar como o rsync?

1

Eu tenho duas raízes, /sync e ssh://bob@remotehost//sync . Essas raízes contêm três subpastas: paul , bob e sam . No momento, sincronizo usando o seguinte script:

rsync -a --delete --delete-excluded --delete-after --force\
  /sync/paul/ bob@remotehost:/sync/paul
rsync -a --delete --delete-excluded --delete-after --force\
  bob@remotehost:/sync/bob/ /sync/bob
unison /sync/sam ssh://bob@remotehost//sync/sam

Eu quero criar um perfil uníssono que gerencie todas as três subpastas. Até agora eu tenho o seguinte:

# Define roots and paths
root = /sync
root = ssh://bob@remotehost//sync
path = paul
path = bob
path = sam

# Preserve timestamps
times = true

# Force single direction for some paths
forcepartial = Path paul/* -> /sync
forcepartial = Path bob/* -> ssh://bob@host//sync

Ao usar esse perfil, esperava que todas as alterações em /sync/paul fossem propagadas para ssh://bob@remotehost//sync/paul e todas as alterações em /sync/paul fossem excluídas à força. Eu também esperava vice-versa para o caminho bob . No entanto, isso não é o que estou vendo. Nas execuções de teste, o Unison quer propagar novos arquivos e pastas em ambas as direções para os dois caminhos paul e bob .

Como posso fazer com que o Unison se comporte como rsync -a --delete --delete-excluded --delete-after --force $SOURCE/ $DEST para os caminhos bob e paul ?

    
por fuumind 24.07.2015 / 21:31

1 resposta

2

Como se constata, forcepartial = Path paul/* -> ... não corresponde a subarquivos e nomes de palavras que começam com um ponto (por exemplo, paul/.config ). No entanto, pode-se usar BelowPath paul ou Regex paul/.* . O uso a seguir de BelowPath atingiria meu objetivo:

...
forcepartial = BelowPath paul -> /sync
forcepartial = BelowPath bob -> ssh://bob@host//sync

O mesmo, mas usando o Regex:

...
forcepartial = Regex paul/.* -> /sync
forcepartial = Regex bob/.* -> ssh://bob@host//sync

Esta página sugere que a palavra-chave Regex também pode ser usada para associar subpastas, o que significa que forcepartial = Regex somefolder/.* -> ... corresponderia a pasta paul/somefolder e todos os seus filhos. Eu não experimentei isso, então não posso dizer.

    
por 28.07.2015 / 14:12