Как заставить Unison вести себя как rsync?

593
fuumind

У меня есть два корня, /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

1 ответ на вопрос

2
fuumind

Как выясняется, forcepartial = Path paul/* -> ...не совпадает с вложенными файлами и 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и всем ее дочерним элементам. Я не экспериментировал с этим, поэтому не могу сказать.

Я могу рекомендовать не использовать Unison для синхронизации домашних папок для пользователей настольных компьютеров, по крайней мере, на медленном HD. Постоянный поток файлов состояний для таких приложений, как Chromium, Firefox и т. Д., Делает фазу индекса Unison вечной в каждом сеансе синхронизации. fuumind 8 лет назад 0

Похожие вопросы