You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Unison合并两台NFS服务器上的冲突文件?

解决Unison同步时无法合并txt文件的问题

问题根源

你当前的Unison配置里,merge项只指定了要合并的文件路径,但没有定义具体的合并工具/命令,这就是报错'merge' preference not set for hello.txt的原因。Unison需要明确知道遇到冲突文件时用什么工具来合并。

解决步骤

1. 确保两台服务器都安装diff3

Unison常用diff3作为合并工具,先在两台服务器上执行安装命令:

sudo apt update && sudo apt install diffutils -y

2. 修正sync.prf的merge配置

把原配置里的merge = Name /home/ubuntu/nfs/*txt替换成以下内容:

root = /home/ubuntu/nfs                                # shared directory on server1
root = ssh://ubuntu@XX.XX.XX.XX//home/ubuntu/nfs       # shared directory on server2
ignore = Name .git
# 对所有txt文件使用diff3自动合并
merge = Name *.txt diff3 -m CURRENT OLD NEW > NEW
  • 这里的CURRENT、OLD、NEW是Unison内置变量,会自动替换为对应版本的文件路径:
    • CURRENT:本地修改后的文件版本
    • OLD:同步前的基础版本
    • NEW:远程修改后的文件版本

3. 重新运行同步

执行命令重新同步:

unison sync.prf

此时Unison会自动调用diff3合并两台服务器上的hello.txt内容,完成同步。

为什么之前的尝试无效

你之前试的几种配置都不符合Unison的语法规则:

  • Path /home/ubuntu/nfs = update:Path仅用于指定同步路径,不能直接绑定update操作
  • *.txt update、*.txt = update:属于语法错误,Unison不支持这种写法
  • merge = diff3 -m /home/ubuntu/nfs/*.txt OLD /home/ubuntu/nfs/*txt > NEW:硬编码文件路径无效,必须使用Unison提供的变量,且格式不符合merge项的定义规则

内容的提问来源于stack exchange,提问作者shihack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:50:14