Unision选项`prefer = newer`和`force = newer`有什么区别?

时间:2017-10-04 18:01:18

标签: synchronization unison

force

的Unison手册
  

您还可以指定-force newer(或-force older)以强制Unison选择具有较晚(较早)modtime的文件。在这种情况下,还必须启用-times首选项。

我的理解是,当发生冲突时,会采用更新的文件版本。但是还有其他选项prefer,也可以设置为newer。不幸的是prefer的描述很少,所以我不知道prefer=newer的含义是什么,有什么区别?

1 个答案:

答案 0 :(得分:2)

喜欢更新

您的理解并不完整。当检测到文件版本不同时,和其中一个文件只是另一个文件的更新版本, Unison会将较新的文件复制到另一个文件上。

现在,如果您在两台计算机上更新了单个文件的每个版本而未在编辑之间进行同步,该怎么办?这两个文件都不是另一个文件的更新版本,因此Unison要保留哪一个是不明确的。这些文件被称为in conflict,Unison将提示您选择一个文件(或者如果您设置了auto true,Unison将跳过该文件)。 prefer newer选项将告诉Unison在这种情况下不会发生冲突,并假设具有最新时间戳的文件是您要同步的文件。如果您希望Unison在后台运行,并使用auto truerepeat watch等选项,这一点非常重要。以下是手册中prefer的相关说明,请注意,只有当路径或文件发生冲突时才会有用:

  

更喜欢xxx

     

包含偏好-prefer root会导致Unison始终解决有利于root的冲突,而不是向用户寻求指导。 (root的语法与root首选项的语法相同,加上较新和较旧的特殊值。)

     

此首选项被preferpartial首选项覆盖。

     

只有在您确定知道自己在做什么时才应使用此首选项!


强制更新

对于force newer,看起来您错过了引用行之前的手册中的行:

  

包含首选项force root会导致Unison解决所有差异(甚至是非冲突的更改),以支持root。这有效地将Unison从同步器更改为镜像实用程序。

因此,prefer选项仅在发生冲突时同步文件(特别是如果文件已更改),force将同步所有内容,无论是否存在一直在变化。