对于dropbox,我也只是从使用体验上来说一说,并没有仔细研究。
首先,肯定每一个文件都有版本号,并且版本号可能还有一种算法,这个算法肯定不会是单一要素,如根据时间或者存储的上一个文件之间的对比,因为还要面临离线状态下的文件更新。
再,dropbox为了体验比较快速,当你删除文件的时候其实他是存放在本地的隐藏目录,这样如果你撤消删除的时候,可以很快的恢复,而不需要重新在下载。
再,对于@iammutex 说需要人肉解决冲突,我所知道的是dropbox应该是自动解决的,对于用户是透明的,所以自动解决冲突肯定也要有一个比较全面的方案,这样可以将面临各种终端设备的问题。
最后,dropbox服务器端肯定是存储一份最完整的文件结构和文件列表,而且肯定也会有文件的md5或者hash的方法保证文件的完整性,进行相应的对比,还要有一个机制可以让文件自动的同步,文件的自动同步分为两种,一种是各客户端在打开软件之后进行同步,这个比较容易实现是客户端发起的;另一种是其它客户端更新之后,服务器告之其它同时在线的客户端同时进行更新,我想应该是对客户端加入了一个计划任务隔一段时间主动与服务器端进行联系(如果是服务器主动告之客户端更新,我想难度很大,光客户端ip就是非常难判断的事,所以dropbox的的更新应该不是及时的,而是有延时的)。
以上只是自己思考的dropbox实现的几个难点和猜测他的工作方式。我也很关注这个问题。