iDvel / rime-ice

Rime 配置:雾凇拼音 | 长期维护的简体词库
https://dvel.me/posts/rime-ice/
GNU General Public License v3.0
9.22k stars 617 forks source link

请问有没有比较好的同步方案可以在多台设备之间定时同步词库和配置 #135

Closed jiuhuche120 closed 1 year ago

wxyzh commented 1 year ago

同步的本质是将多个终端的sync目录同步。因此需要修改installation.yml 文件,并且有一个公用的存储空间。 我目前自用的同步方案是,自建存储(内网通过共享访问,外网通过webdav访问) 同步配置可参考 https://chenhe.me/post/oh-my-rime/#%E9%85%8D%E7%BD%AE%E5%90%8C%E6%AD%A5

  1. 我的内网PC 直接将sync_dir 修改为Windows 映射的网络驱动器。
  2. 外网pc 用rclone 挂载webdav驱动器。
  3. 移动终端用FolderSync通过webdav 同步sync目录,下载字典文件。
  4. 小狼毫的同步命令为 WeaselDeployer.exe /sync,可以使用计划任务进行自动运行
  5. 移动端我用的同文,可以手动触发同步,或者使用tasker 定期发送意图 com.osfans.trime.sync 同步。
iDvel commented 1 year ago

Mac 可以用 sleepwatcher,在睡眠时自动同步: https://dvel.me/posts/sleepwatcher-mac-auto-script/ 就是在睡眠时运行 /Library/Input\ Methods/Squirrel.app/Contents/MacOS/Squirrel --sync 这个命令。

jiuhuche120 commented 1 year ago

squirrel --sync 这个命令能将sync_dir的配置和词库同步过来吗,好像我这边只会把我本地的同步到sync_dir?目前我的方案是通过launchctl每1小时通过shell做同步。具体如下:

image

或者换句话说,sync从sync_dir同步过来的条件是什么

iDvel commented 1 year ago

【同步目录】里有价值的只有用户词库 *.userdb.txt

同步时,单向备份了【配置根目录】下的 txt 和 YAML 文件到【同步目录】,放在文件夹里的那些和八股文之类的都没有备份,所以不适用于同步配置。

同步时,双向更新【配置目录】下的 rime_ice.userdb/ 内的二进制文件与【同步目录】下的 rime_ice.userdb.txt,包括【同步目录】所有文件夹的。 图片

scomper commented 1 year ago

可以利用软链接方式将鼠须管配置指向到 Dropbox 实现同步。

  1. Dropbox 创建用于同步配置的文件夹 RimeConfig,复制~/Library/Rime/所有内容到其中
  2. 原配置文件夹改名备档,将原 ~/Library/Rime/ 文件夹更名 ~/Library/Rime_bak
  3. 创建软链接实现 #Rime 文件同步(以下是新版 Dropbox 的路径),终端下运行  ln -s ~/Library/CloudStorage/Dropbox/RimeConfig ~/Library/Rime
  4. Dropbox 文件夹中右键选中 RimeConfig 将其设置为「可离线访问」
wxyzh commented 1 year ago

需要注意的是.userdb/是独占访问的

jiuhuche120 commented 1 year ago

同步时,单向备份了【配置根目录】

明白了,我尝试用软连接试试

tksmly commented 1 year ago

听上去不错,但是不知道这样做会不会导致性能下降,因为我不清楚rime写入是同步还是异步🧐

wxyzh commented 1 year ago

听上去不错,但是不知道这样做会不会导致性能下降,因为我不清楚rime写入是同步还是异步🧐

同步时是无法输入的,所以要控制频率,最好是在闲时进行,比如屏幕熄灭,锁定或者解锁时进行

whitewatercn commented 1 year ago

试试verysync(或者syncthing等相似软件)?弄一个多台设备都能连接的服务器(我用了云服务器+NAS)作为云端,我把整个rime文件夹全同步了,本地定期和云端同步即可

verysync带了回收站功能(可以恢复时间/版本),如果有冲突就调整一下(但词库这种文件冲突就冲突了吧,问题不大🤣

image
jiuhuche120 commented 1 year ago

采用软链接的方式,目前使用起来良好 ln -s ~/Library/Mobile\ Documents/com~apple~CloudDocs/jiuhuche120/Rime ~/Library/Rime 这种软链接的方式是否存在一些未知的弊端?

jiuhuche120 commented 1 year ago

试试verysync(或者syncthing等相似软件)?弄一个多台设备都能连接的服务器(我用了云服务器+NAS)作为云端,我把整个rime文件夹全同步了,本地定期和云端同步即可

verysync带了回收站功能(可以恢复时间/版本),如果有冲突就调整一下(但词库这种文件冲突就冲突了吧,问题不大

我更青睐于软链接,首先是因为免费(icloud 和dropbox都有一定的免费额度),其次是简单 如果该方式没有什么明显弊端,我建议在rime文档中推荐该方案作为配置和词库的同步方案

tksmly commented 1 year ago

采用软链接的方式,目前使用起来良好 ln -s ~/Library/Mobile\ Documents/com~apple~CloudDocs/jiuhuche120/Rime ~/Library/Rime 这种软链接的方式是否存在一些未知的弊端?

不建议这样,因为build目录在不同的平台可能是不一样的,建议软链接sync目录

jiuhuche120 commented 1 year ago

采用软链接的方式,目前使用起来良好 ln -s ~/Library/Mobile\ Documents/com~apple~CloudDocs/jiuhuche120/Rime ~/Library/Rime 这种软链接的方式是否存在一些未知的弊端?

不建议这样,因为build目录在不同的平台可能是不一样的,建议软链接sync目录

确实会有这个问题,只是我目前使用的环境只在macos,所以没有出现这个问题 一个合理的做法可能是:

  1. 同步除build以外所有的文件,因为sync的局限可能导致一部分配置没办法同步
  2. 在睡眠时自动运行rime的重新部署以更新rime的配置 上述做法相当于将词库和配置实时更新,但是将配置的生效放在睡眠情况下自动进行,或者自己手动进行