4

我需要在 OSX 上同步两个目录。我发现这篇文章推荐使用 unison。

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

因此,我想为了实现我的目的,应该将 unison 与一个触发器一起使用,该触发器将观察变化并通知 unison 完成其工作。

但是怎么做呢?有什么推荐和教程吗?

4

4 回答 4

6

Unison 内置了此功能。只需将该行添加repeat = watch到您的 Unison 配置文件中。

于 2015-12-19T20:31:41.153 回答
2

安装齐声:

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
于 2017-02-02T21:24:27.147 回答
1

我找到了用于查看目录中内容更改的 npm 模块fsmonitor

首先,我编写了一个小脚本来同步我想要的文件夹,例如:

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

在 global: 中安装npm install -g fsmonitor模块
在 shell 中运行命令:fsmonitor -d <the dir> <sync script>.
然后目录发生任何变化,都会执行同步脚本,两个目录就会同步。

于 2015-12-05T04:31:41.790 回答
0

在.unison目录repeat = watch中的 unison 配置文件中使用可以解决问题。(我在 Ubuntu 18.04 上试过)

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

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

path = shared

repeat = watch

第二步,开始同调

$ unison example

第三步,在任一根目录下创建一个文件,它会自动同步同步到另一个根目录。

$ 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 中安装 unisonsudo 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
于 2019-03-26T16:49:28.780 回答