论文部分内容阅读
随着云计算技术的发展,云存储技术也逐渐被广泛使用了。很多运用云存储技术的网盘进入到人们的生活中。现在已经有了一些基于云存储的同步系统,比如百度云、金山快盘、360云盘等比较成熟的产品。但是,这些商业软件都只着眼于开发windows客户端,Linux客户端方面仍然是一片空白。在研究生阶段,我参与了一个基于SyncML协议实现的手机通讯录同步系统的开发,对SyncML协议有了一些了解。依据实际开发的经验,开发一款基于SyncML协议的用于Linux系统上的同步软件是可行的。本论文就是针对上述问题,以开发文件同步系统过程中所涉及到的知识,会遇到的问题为主要研究对象,再结合自己开发的经验,对SyncML协议的优点和局限性,对文件同步系统的主要理论,以及实现时会遇到的典型问题进行详尽的讨论和研究。本文的主要内容有:1. SyncML协议的分析和改进。SyncML协议设计的初衷是为移动终端之间的同步提供一个统一的标准。同步过程中可能会出现各种各样的问题,SyncML协议对很多问题提供了一些解决方案。但是SyncML协议是针对移动终端设计的,同步类型也只局限于日历,电话本等信息。为此,在本文中,基于SyncML协议进行了修改和扩充,以完成文件同步的功能。2.服务器中会存储大量重复的文件,为了解决这个问题,本文中提出了一种文件内容和文件描述相分离的方法。这种方法来源于Linux的经典文件系统ext,并将copyon write技术应用上去。3.本文对同步服务器和同步客户端在实现时遇到的一些问题进行了整理。比如冲突检测,资源映射等。分析了这些问题产生的原因,并结合自己的实践,提出了解决和改进的方案。4.系统在同步时采用了rsync算法来进行文件变化的查找。使得在同步时可以只同步文件的变化情况,提高文件同步的效率。