Как запустить синхронизацию файлов и каталогов unison, когда есть какие-либо изменения в OSX?

У меня есть необходимость синхронизации двух каталогов на OSX. Я считаю, что этот пост рекомендует использовать унисон.

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

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

Но как это сделать? Любая рекомендация и учебник?

3 ответа

В Unison встроена эта возможность. Просто добавьте строку repeat watch в свой профиль Unison.

Установите Unison:

brew install unison

Установите unox:

git clone git@github.com:hnsl/unox.git
cd unox
ln -s $PWD/unox.py /usr/local/bin/unison-fsmonitor

Сделайте начальную синхронизацию:

unison -auto -batch dirA dirB

Запустите непрерывную двунаправленную синхронизацию:

unison -auto -batch -repeat watch -times dirA dirB

С помощью repeat = watch в вашем профиле унисон в каталоге.unison добьются цели. (Я пробовал на Ubuntu 18.04)

Шаг 1, отредактируйте унисонный профиль, $HOME/.unison/example.prf

root = /tmp/data1
root = /tmp/data2

path = shared

repeat = watch

Шаг 2, начать унисон

$ unison example

Шаг 3, создайте файл в любом корне, и он будет автоматически синхронизирован с другим.

$ touch /tmp/data1/shared/1.txt
$ ls /tmp/data2/shared/
-rw-r--r-- 1 user1 user1    0 Mar 26 16:25 1.txt

аппендикс

  1. Вы можете установить унисон в Ubuntu, запустив sudo apt-get install unison
  2. Использовать repeat = watch, тебе понадобиться unison-fsmonitor
$ curl -L -o unison-fsmonitor https://github.com/TentativeConvert/Syndicator/raw/master/unison-binaries/unison-fsmonitor
$ which unison
/usr/bin/unison
$ sudo cp unison-fsmonitor /usr/bin/
$ sudo chmod +x /usr/bin/unison-fsmonitor

Я нахожу модуль npm fsmonitor для просмотра изменений содержимого в каталоге.

сначала я пишу небольшой скрипт для синхронизации папок, которые я хочу с унисон, как:

unison -auto -batch dirA dirB
unison -auto -batch dirB dirA

установить модуль в глобальном масштабе: npm install -g fsmonitor,
запустить команду в оболочке: fsmonitor -d <the dir> <sync script>,
Затем в каталоге происходит любое изменение, выполняется сценарий синхронизации, и эти два каталога синхронизируются.

Другие вопросы по тегам