унисон: как синхронизировать отдельные подпапки в нескольких каталогах? - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь синхронизировать подмножество моих каталогов между двумя машинами (обе Ubuntu 16.04) с унисон (версия 2.48.3).На обеих машинах у меня есть каталог под названием «исследование».Он содержит папку для каждого проекта, над которым я работаю.Внутри каждой из этих папок есть папка с именем «lit», и я хотел бы синхронизировать все эти «освещенные» папки в унисон, не заботясь о самих именах проектов.Пример: на обеих машинах есть следующие папки:

/home/chris/research/projA/lit
/home/chris/research/projA/otherstuff
/home/chris/research/projB/lit
/home/chris/research/projB/otherstuff

И из них я хочу синхронизировать projA/lit на двух машинах, а также projB/lit.

У меня естьустановил унисон и прочитал сам через man-страницу.основываясь на этом, я изменил файл профиля unison default.prf следующим образом:

# Unison preferences file
# used for syncing lit between work and home

# roots
root = /home/chris/research
root = ssh://pc-work//home/chris/research

# paths
path = */lit

Хотя unison успешно подключается к моему рабочему компьютеру, он не находит ничего для синхронизации.Если, напротив, я заменяю в вышеуказанном профиле path = */lit на path = projA/lit, это работает.

Таким образом, вопрос: могу ли я получить унисон для синхронизации подпапки lit для всех проектов без необходимости указыватьэти, и если да, то как?Или мне нужно обернуть команду unison в какой-то цикл, чтобы перебрать все папки проекта?

1 Ответ

0 голосов
/ 25 января 2019

path - это не верный способ достичь того, чего вы хотите.Из документации на path:

Обратите внимание, что предпочтения path интерпретируются буквально - они не являются регулярными выражениями.

Даже есливы используете не регулярное выражение, а глобус оболочки, я понимаю, что значение path специально не интерпретируется unison.

Вы можете добиться эффекта, который вы 'после разумного использования ignore и / или ignorenot.Эти do допускают глобусы оболочки или регулярные выражения.

Например, (заявление об отказе: я не проверял это)

ignore = Path proj*/otherstuff

для любого каталога, который вы хотитепропустить во время синхронизации.Вы также можете указать это наоборот, если у вас есть больше каталогов для пропуска, чем для синхронизации:

ignore = Path proj*/*
ignorenot = Path proj*/lit

Обратите внимание, что вам не нужно устанавливать path, если файлы и каталоги вы хотитесинхронизировать уже прямо под указанным root.

...