15.4. 不同机器之间的数据传输 (同步)

我对这个主题还没有经验。这只是对一些数据传输方式以及在不同机器之间保持数据一致性的方法进行调查。

15.4.1. 有用的硬件

  1. 外部硬盘

  2. ZIP 驱动器

Wade Hampton 写道: "你可以使用 MS-DOS 格式化的 ZIP 和软盘进行数据传输。你也可以使用 LS120。如果你有 SCSI,你可以使用 JAZ、MO 或可能的 DVD-RAM (任何你可以写入的 SCSI 光盘)。我有一个东芝 700CT 的内置 ZIP 驱动器。它工作得很好 (我使用 automount 来挂载它)。我在 ZIP 磁盘上使用 VFAT,这样我可以将它们移动到 Windows 机器、Linux 机器、NT,交给同事等等。一个问题是,我必须关机才能将内置 CD 与 ZIP 交换。"

15.4.2. 有用的软件

15.4.2.1. 版本管理软件

虽然版本管理软件的主要目的肯定不是这个,但像 CVS (Concurrent Version System,并发版本系统) 这样的版本管理软件,当你需要在多台机器上工作,并且在保持它们同步时遇到问题时 (在计算机科学文献中,这通常被称为 "断开连接的文件系统"),它们是一个完美的工具。与像 rsync 这样的程序不同,rsync 是不对称的 (一侧是主服务器,其文件会覆盖从服务器的文件),CVS 接受你在多台机器上进行更改,并在之后尝试合并它们。不对称工具仅在你能够遵守严格的纪律,在你从一台机器切换到另一台机器时才有效。相反,像 CVS 这样的工具更容易让人忘记。

要同步两台或多台机器 (通常是台式机和笔记本电脑),只需在网络上的某个地方选择一个 CVS 仓库。它可以位于你要同步的机器之一上,也可以位于第三台主机上。无论如何,这台机器应该易于通过网络访问,并具有良好的磁盘。

然后,cvs co 你想要工作的模块,编辑它,并在你到达同步点并连接时 cvs commit。如果你在两台主机上都进行了更改,CVS 将尝试合并它们 (通常会自动成功),或者放弃并要求你手动解决。

此解决方案的典型限制:CVS 不能很好地处理二进制文件,因此此解决方案更适合 vi 或 emacs 用户,而不是 GIMP 爱好者。CVS 在处理一些 UNIX 特性 (如符号链接) 时遇到问题。

有关 CVS 的更多信息,请参阅 Web 页面。CVS 文档非常出色 (info 格式)。

15.4.2.2. CODA 文件系统

CODA 文件系统是 Andrew 文件系统的后代。与 AFS 类似,Coda 提供对共享 UNIX 文件命名空间的透明位置访问,该命名空间映射到一组专用文件服务器。但 Coda 代表了 AFS 的重大改进,因为它在面对服务器和网络故障时提供了更高的可用性。可用性的提高是通过使用服务器复制和断开连接操作的互补技术来实现的。断开连接操作已被证明在支持便携式计算机方面尤其有价值。

15.4.2.3. unison

unison 是一个用于 Unix 和 Windows 的文件同步工具。它允许将文件和目录集合的两个副本存储在不同的主机上 (或同一主机上的不同磁盘上),分别修改,然后通过将每个副本中的更改传播到另一个副本来更新。Unison 由研究人员编写,他们关注定义明确的复制语义:他们对安全性非常挑剔,并确保优雅地处理诸如过早终止等问题。Unison 是对称/双向的 (与 rsync 不同),可以很好地处理二进制文件 (与 cvs 不同),并且是一个用户级程序 (与大多数分布式文件系统不同)。它还合理地尝试在 Unix/Linux 和 Windows 文件系统之间进行透明同步,这绝非易事。缺点:它不做版本控制,也不处理超过 2 个文件树之间的同步。unison 与配置管理软件包 (CVSPRCS 等)、分布式文件系统 (CODA 等)、单向镜像实用程序 (rsync 等) 和其他同步器 (Intellisync、Reconcile 等) 等工具共享许多功能。但是,在某些方面它有所不同

  • unison 可以在 MicroSoft-Windows (95、98、NT 和 2k) 和 Unix (Solaris、Linux 等) 系统上运行 (对于基于 ARM 的 Linux PDA,请参阅 TuxMobil IPK feed)。此外,unison 可以平台工作,例如,允许你将 Microsoft-Windows 笔记本电脑与 Unix 服务器同步。

  • 与分布式文件系统不同,unison 是一个用户级程序:无需破解 (或拥有!) 内核,也无需在任何一台主机上拥有超级用户权限。

  • 与简单的镜像或备份实用程序不同,unison 可以处理分布式目录结构中两个副本的更新。不冲突的更新会自动传播。冲突的更新会被检测并显示。

  • unison 在连接到互联网的任何一对机器之间工作,通过直接套接字链接或通过 rsh 或加密的 ssh 连接进行隧道通信。它对网络带宽很谨慎,并且在慢速链接 (如 PPP 连接) 上也能良好运行。

  • unison 具有清晰而精确的规范。

  • unison 具有故障恢复能力。即使在异常终止或通信故障的情况下,它也会小心地使副本及其自身的私有结构始终处于合理状态。

  • unison 是免费的;完整的源代码根据 GNU 通用公共许可证提供。

15.4.2.4. OpenSync, MultiSync

OpenSync 是 KitchenSync 和 MultiSync 的继任者。OpenSync 是一个平台和分发独立的同步框架。它由一个强大的同步引擎和几个可以用于连接设备的插件组成。OpenSync 非常灵活,能够同步任何类型的数据,包括联系人、日历、任务、笔记和文件。

MultiSync 是一个免费的模块化程序,用于在计算机上的程序与其他计算机、移动设备、PDA 或手机之间同步日历、地址簿和其他 PIM 数据。目前,MultiSync 具有用于 Ximian Evolution 日历和 IrMC Mobile Client 日历 (由 Sony/Ericsson T68i 支持) 的插件,可通过蓝牙、IrDA 或电缆连接。

15.4.2.5. Funambol

Funambol 是一款开源移动应用程序服务器软件,为无线设备和 PC 提供推送电子邮件、地址簿和日历 (PIM) 数据同步、应用程序配置和设备管理,并利用标准协议。对于用户来说,这意味着在普通手机上具有类似 BlackBerry 的功能。Funambol 也是一个移动应用程序软件开发平台。它提供客户端和服务器端 Java API,并促进任何移动项目的开发、部署和管理。Funambol 是开放移动联盟数据同步和设备管理协议 (OMA DS 和 DM,以前称为 SyncML) 的事实标准实现。Funambol 取代了以前的 sync4J 工具。

15.4.2.6. Tsync

Tsync (透明) 同步 是一个用户级守护进程,它在一组计算机之间提供透明同步。Tsync 使用对等架构来实现可扩展性、效率和鲁棒性。

15.4.2.7. InterMezzo

InterMezzo 是一个新的分布式文件系统,专注于高可用性。InterMezzo 是一个开源项目,目前在 Linux (2.2 和 2.3) 上运行。开发的主要目标是为目录的灵活复制提供支持,具有断开连接操作和持久缓存。例如,我们希望简化在多台计算机上管理主目录副本的过程,并解决笔记本电脑/台式机同步问题。在更大的范围内,我们的目标是为大型文件存储库提供复制,例如支持服务器的高可用性。InterMezzo 受到 Coda 文件系统的深刻启发,但经过了完全重新设计和重新工程。

15.4.2.8. WWWsync

WWWsync/ 是一个用 Perl 编写的程序,它将通过 ftp 从你的本地页面更新你的网页。这最初是为更新 Demon 主页而编写的,但也可以与其他提供商一起使用,这些提供商提供对你的网页的直接 FTP 访问。我还没有为笔记本电脑用途检查过这个。

15.4.2.9. rsync

rsync 是一个程序,它允许以与 rcp 非常相似的方式将文件复制到远程机器和从远程机器复制文件。它比 rcp 有更多的选项,并使用 rsync 远程更新协议 在目标文件已存在时大大加快文件传输速度。rsync 远程更新协议 允许 rsync 仅传输通过网络链接的两组文件之间的差异。

15.4.2.10. Xfiles - 文件树同步和交叉验证

Xfiles 是一个交互式实用程序,用于通过网络比较和合并一个文件树与另一个文件树。它支持在多台机器上进行自由工作 (无需跟踪哪些文件在哪些机器上被更改)。Xfiles 还可以用作交叉验证的磁盘 <-> 磁盘备份策略 (磁盘的某些部分可能随时损坏,而没有简单的指示说明哪些文件受到影响。在备份之前针对第二个磁盘进行交叉验证,以确保你没有备份错误的数据)。

一个客户端/服务器程序 (客户端上的 GUI) 遍历文件树并报告服务器机器上丢失、客户端机器上丢失或不同的任何文件。对于每个这样的文件,都会显示文件大小和修改日期,并且可以获得比较结果 (使用 UNIX diff)。对于从一个树中丢失的文件,会报告该树中类似名称的文件。然后,可以将不一致的文件在任一方向上复制或在任一机器上删除。文件树不需要通过 nfs 访问。文件校验和是并行计算的,因此可以在慢速网络链接上比较大致相似的树。客户端和服务器进程也可以在同一台机器上运行。文件选择以及与 RCS 等版本控制系统的交互可以通过使用 jpython 的脚本来处理。要求:需要 Java1.1 或更高版本以及 JFC/Swing1.1。Xfiles

15.4.2.11. sitecopy

Sitecopy 用于将本地存储的网站复制到远程 Web 服务器。该程序会将本地更改的文件上传到服务器,并从服务器中删除本地已删除的文件,以通过一个命令保持远程站点与本地站点同步。目的是消除使用 FTP 客户端上传和删除单个文件的麻烦。sitecopy

15.4.3. 数据转换: 地址簿, 书签, 待办事项列表, LDAP, 网页

将用户数据从一个移动设备传输到另一个移动设备,通常需要一些工具来从源设备中提取数据,然后再将其导入到目标设备中,例如,如果你想更换你喜欢的手机。或者,如果你也想在 PDA 上使用来自手机的地址簿。这里有一些用于 书签转换地址簿迁移vCard 提取LDAP 合并 以及 用于 PDA 和手持 PC 的数据转换 的工具。