Как заставить Unison вести себя как rsync?
У меня два корня, /sync а также ssh://bob@remotehost//sync, Эти корни содержат три подпапки: paul, bob а также sam, В настоящее время я синхронизирую их, используя следующий скрипт:
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
Я хочу создать унисонный профиль, который управляет всеми тремя подпапками. Пока у меня есть следующее:
# 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
Используя этот профиль, я ожидал, что все изменения в /sync/paul распространяться ssh://bob@remotehost//sync/paul и все изменения в /sync/paul быть принудительно удаленным. Я тоже ожидал наоборот за путь bob, Однако это не то, что я вижу. В моих тестовых прогонах Unison хочет распространять новые файлы и папки в обоих направлениях для обоих путей paul а также bob,
Как я могу заставить Унисон вести себя как rsync -a --delete --delete-excluded --delete-after --force $SOURCE/ $DEST для путей bob а также paul?
1 ответ
Как выясняется forcepartial = Path paul/* -> ... не соответствует sub file- и foldernames, начинающимся с точки (например, paul/.config). Тем не менее, можно использовать BelowPath paul или же Regex paul/.* вместо. Следующее использование BelowPath достиг бы моей цели:
...
forcepartial = BelowPath paul -> /sync
forcepartial = BelowPath bob -> ssh://bob@host//sync
То же самое, но с использованием Regex:
...
forcepartial = Regex paul/.* -> /sync
forcepartial = Regex bob/.* -> ssh://bob@host//sync
На этой странице предполагается, что ключевое слово Regex также может использоваться для сопоставления вложенных папок, подразумевая, что forcepartial = Regex somefolder/.* -> ... будет соответствовать папке paul/somefolder и все его дети. Я не экспериментировал с этим, поэтому не могу сказать.