Synchronization 当存在';OSX有什么变化吗?

Synchronization 当存在';OSX有什么变化吗?,synchronization,unison,Synchronization,Unison,我需要同步OSX上的两个目录。我发现建议使用unison 我试过unison,它似乎可以很好地同步两个目录。但它不会自动进行同步(当有任何更改时,始终保持两个目录同步) 所以我想为了达到我的目的,unison应该与一个触发器一起使用,它将监视变化并通知unison完成它的工作 但如何做到这一点呢?有什么建议和教程吗 我发现npm模块fsmonitor用于监视目录中的内容更改 首先,我编写一个小脚本,将我想要的文件夹与unison同步,如: unison -auto -batch dirA dir

我需要同步OSX上的两个目录。我发现建议使用unison

我试过unison,它似乎可以很好地同步两个目录。但它不会自动进行同步(当有任何更改时,始终保持两个目录同步)

所以我想为了达到我的目的,unison应该与一个触发器一起使用,它将监视变化并通知unison完成它的工作


但如何做到这一点呢?有什么建议和教程吗

我发现npm模块
fsmonitor
用于监视目录中的内容更改

首先,我编写一个小脚本,将我想要的文件夹与unison同步,如:

unison -auto -batch dirA dirB
unison -auto -batch dirB dirA
在全局中安装模块:
npm安装-g fsmonitor

在shell中运行命令:
fsmonitor-d


然后目录中发生任何更改,将执行同步脚本,两个目录将同步。

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

在中的unison配置文件中使用
repeat=watch
,即可实现此目的。(我试过Ubuntu 18.04)

步骤1,编辑unison配置文件,$HOME/.unison/example.prf

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

path = shared

repeat = watch
步骤2,开始unison

$ unison example
第3步,在任一根目录中创建一个文件,它将通过unison自动同步到另一根目录

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

  • 您可以在Ubuntu中运行
    sudo apt get install unison
  • 要使用
    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