27.3. Unison 简介

Unison 是同步和传送整个目录树的绝佳解决方法。可以双向执行同步,并通过直观的图形化前端控制同步。还可以使用控制台版本。同步可以自动执行,所以不必与用户交互,但这需要一定经验。

27.3.1. 要求

必须在客户机和服务器上同时安装 Unison。在这种上下文环境中,服务器一词指另一台远程主机(不同于 CVS,如第 27.1.2 节 “CVS”中所述)。

下一节中将讨论如何将 Unison 与 ssh 一同使用。一同使用时,必须将 SSH 客户机安装在客户机上,将 SSH 服务程序安装在服务器上。

27.3.2. 使用 Unison

Unison 所用的方法是将两个目录(根目录)关联起来。这种关联是象征性的,即不是在线连接。在本例中,目录布局如下所示:

客户机:

/home/tux/dir1

服务器:

/home/geeko/dir2

您需要同步这两个目录。客户机上的用户是 tux,服务器上的用户是 geeko。首先要做的是测试客户机与服务器是否能够通讯:


unison -testserver /home/tux/dir1 ssh://geeko@server//homes/geeko/dir2

最常遇到的问题包括:

  • 客户机和服务器上的 Unison 版本不兼容。

  • 服务器不支持 SSH 连接。

  • 这两个指定路径均不存在。

如果一切正常,省略选项 -testserver。在首次同步期间,Unison 并不了解这两个目录之间的关系,所以会针对各个文件和目录的传送方向提出建议。操作列中的箭头指示传送方向。问号表示 Unison 无法就传送方向提出建议,因为两个版本均已更改或者都是新的。

使用箭头键可为单个项设置传送方向。如果所有显示项的传送方向都正确,只需单击转到

通过在启动 Unison 时指定命令行参数,可以控制该程序的特性(例如,是否以透明方式自动执行同步)。使用 unison --help 可以查看所有参数的完整列表。

例 27.1. 文件 ~/.unison/example.prefs

root=/home/tux/dir1
root=ssh://wilber@server//homes/wilber/dir2
batch=true

对于每组目录,都会在用户目录 ~/.unison 中维护一个同步日志。也可以在此目录中储存配置集,如 ~/.unison/example.prefs。要启动同步,将此文件指定为命令行参数,如 unison example.prefs 所示。

27.3.3. 参见信息

Unison 的正式文档非常有用。故此,本节只作简要介绍。完整的手册在 http://www.cis.upenn.edu/~bcpierce/unison/ 和 SUSE 软件包 unison 中提供。