![如何实现user1对userN文件的双向同步,同时保持mtimes?](https://linux22.com/image/72924/%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0user1%E5%AF%B9userN%E6%96%87%E4%BB%B6%E7%9A%84%E5%8F%8C%E5%90%91%E5%90%8C%E6%AD%A5%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BF%9D%E6%8C%81mtimes%EF%BC%9F.png)
用户1想要在两台机器之间进行双向同步。用户1是的成员组2并且有一个非特权的 ssh 隧道。有很多文件和目录,例如:
rwxrwx--- userN group2 enclair/WEB/CLIENTS/VictorMarty
一些文件在两台机器上进行编辑,需要手动合并。因此,我选择了 Unison,而不是双方的 rsync 工作。
unison 的首选项文件:
perms = -1
#group = true
#owner = true
times = true
我使用的双向同步命令:
$ unison "profile" -perms 0 -dontchmod
输出/结果:
...
UNISON 2.48.3 finished propagating changes at 02:29:24.90 on 13 Sep 2015
Saving synchronizer state
Synchronization incomplete at 02:29:25 (0 items transferred, 1 skipped, 60 failed)
failed: enclair/WEB/CLIENTS/VictorMarty
times
我可以通过在 profile.prf 文件中注释掉它来使其工作。在此过程中丢失 mtime 元数据。
我看到一个可以 sudo unison 并与另一侧 sudo --server-cmd
,这样实际上 unison 就会以 root 身份执行,但连接仍然是普通用户。
这是实现双向同步保持文件修改时间的方法,最好保持 user1 吗?
答案1
根据同步所需的时间范围,您也许可以使用两个 rsync 进程。设置一个 cron 作业rsync -au <source> <dest>
在每个主机上运行。这应该使两台主机在一定的时间范围内“同步”。您还可以使用 inotify 在文件更改时运行 rsync。