还不支持与服务器之间同步 · Issue #11 · LiuLang/bcloud · GitHub优秀个人简历推荐

百度网盘的同步算法并没有公开. 它的windows客户端的做法大致是这样的, 本地的根目录开始, 统计所有文件/目录信息, 并得到一个很长的字符串(文件哈希), 然后与远程服务器上的哈希值进行比对, 如果两个值相同, 说明本地与远程已经同步了.

但是, 这个算法并没有公开, 就很难在bcloud里面实现了. 另一种方法是逆向它的客户端, 但是这明显很不合适. 当然了, 目前bcloud里面用到的API都是基于百度网盘web版, 以及PCS已经公开的API.

但如果用MD5来单独校验每个文件的话, 也不行; 因为部分文件(尤其是多媒体文件)在百度网盘上的MD5与在本地的MD5不相匹配(我估计是大文件分片的问题), 但如果是很小的文件, 倒不存在MD5不匹配的问题. 如果不存在这样的问题, 我们可以直接计算本地所有文件的MD5与远程所有文件的MD5相比较, 如果不相同, 再比较时间戳就可以确定哪个文件更新, 这样就确定了要同步的内容.

当然, bcloud是支持直接下载/上传多个文件和目录的.


发表回复