文件云存储+自动备份+同步技术原理解读
一谈到文件存储,你首先会想到什么?——U盘、光盘、移动硬盘?长久以来,外置存储设备一直深受人们喜爱,U盘外形小巧,携带方便,价格实惠,几乎是每一个人的“居家旅行必备”之选。但是,U盘虽然方便,可并不牢靠。由于产品质量或使用方法不当等原因,U盘的寿命往往不长,一次着急的“硬拔出”,很可能造成U盘就此“寿终正寝”了。U盘损坏事小,要是U盘里的资料找不回来,那损失可就大了。
因此,大多数人通常不会将特别重要的资料单独存放在U盘等移动存储设备中,还会在电脑、移动硬盘、网盘等多处进行备份。可是,多处备份也带来了新的问题。文件存放地太多,时间长了,往往会不知道哪个是最终版。而且,存在电脑上的资料不易获取,有时候要看一份文件,还要专门跑一趟单位。那么网盘呢?的确,现在网盘很流行,存储空间也非常大,很多也都是免费的,很多人也将重要资料存储在网盘中。但不管是网盘还是U盘,都无法避免要将资料多次存储的问题。如何省掉文档多次拷贝的麻烦,让文档自动备份,同步更新,让你的手机或平板可以随时查看编辑文档?这些烦恼,文档同步技术可以帮你解决。
什么是文档同步技术
简单地说,文档同步技术是指利用网络服务技术,使得电脑、手机、平板等多个终端的数据文件能够同步更新的技术。借助文档同步技术,文档将不受网络、硬件设备等外部环境的影响,可以随时随地查看、编辑、下载、更新。任何一个终端的数据更新之后,其他终端也会同步更新。依托文档同步技术,可以免除文档的复制、拷贝等烦恼,大大提高工作效率,节约时间成本,也更加安全可靠。
文档同步技术的核心是如何快速、准确、安全地对文档进行同步更新。常见的同步技术有集中式同步技术、P2P同步技术、分布式文件同步技术等。其中,集中式同步技术采用的方法是建立文档存储的云服务器,通过网站、APP、软件等形式实现多终端访问,架构形式。P2P同步技术主要依靠P2P架构理念,P2P(peer-to-peer)可以理解为对等计算或对等网络,也被翻译成“点对点”。P2P同步技术可以实现在无服务器的情况下转缓存文件数据,完全的peer-to-peer文件同步,这样更能确保文件数据的安全和传输速度。分布式文件同步技术实现同步服务的“去中心化”,用户不需要依赖于某个特定的服务器即可实现文件同步与共享,国内创业公司Seafile就采用此种技术,分布式文件同步技术的架构。
从使用方法来看,集中式同步技术一般只有客户端,文件存储主要在云服务器端完成,历史版本也保存在服务器上,这种做法能够降低本地磁盘占用空间,适合文件数据量较大的用户群体。分布式文件同步技术则需要同时安装服务端和客户端,文件的存储和更新在本地服务器端完成,安全性和私密性更能保证,比较适合中小企业和私人团体的个性化需求。
文档同步的关键技术
1.云盘存储技术
文档同步的第一项关键技术是云盘存储,又称为网盘。随着互联网技术,尤其是网络视频技术的不断发展,文档的清晰度越来越高,容量也越来越大,导致大容量存储的需求也更加急迫。如果是自己购买大容量存储设备,一方面价格比较贵,另一方面技术支持的成本也比较高,因此大多数公司和个人都会选择使用网络云盘存储。常见的网盘有:金山快盘、联想网盘、百度网盘、360云盘、微软SkyDrive,以及各大邮箱中的网盘或中转站等。这些网盘有些是完全免费的,有些是收费兼免费的,网盘的登录方式包含Web版、Windows端、手机端等多终端。
从字面上理解,云盘存储看似只是将本地服务器(硬盘)转移到网络,然后将服务器的硬盘或硬盘阵列中的一部分容量分给注册用户使用,但事实却没有这么简单。当前主要运用的是云存储技术,大多是基于虚拟化的,把存储设备、云计算、网络资源等进行虚拟化。虚拟化也是传统存储和云存储的重要区别。这样一来,云存储系统中的各节点能够并行提供读写访问服务,系统会更加趋向于稳定和强大。与统一的庞大服务器不同的是,云存储技术是构建在高速分布式存储网络上的数据中心,它将网络中大量不同类型的存储设备通过软件集合起来协同工作,形成一个安全的数据存储和访问的系统。
从技术架构角度来说,云存储系统一般分为四个层级:存储层、管理层、接口层、服务层。存储层位于最下方,是整个云存储系统的基础,通过网络技术将大量的存储设备连起来形成巨大的存储设备资源池。管理层是云存储系统的核心部分,主要功能是在存储设备资源池的基础上部署强大的分布式文件系统,将海量级的用户数据分片处理。同时,管理层还会通过各种措施以提升云存储系统的整体性能。接口层是业务应用和云存储平台之间的一座桥梁,提供各种扩展应用服务所需要调用的接口,客户端或第三方公司在获取权限后可以开放个性化的应用。位于最上层的就是服务层,又称为业务应用层,该层是在前三层提供的数据和接口的基础上,为广大用户提供丰富的业务类型。以上四個层级的架构是环环相扣、相辅相成的。
要想实现云盘存储,除了需要一定量级的云存储设备外,还需要一套基于云计算的云存储系统,庞大的云存储设备由云存储系统进行统一的管理和运行。一个云存储系统只需要一个数据服务器连接到互联网,客户端通过互联网发送文件副本的数据服务器,然后记录信息。当客户端要检索资料的时候,用户首先是访问一个基于Web的界面的数据服务器,然后,服务器就将文件发送到客户端或者允许客户端访问和操纵服务器本身的文件。
2.文件比对技术
依托强大的云存储系统,云盘可以最大限度地节省存储空间,使得存储空间的利用率最大化。以百度云盘为例,虽然说给用户的存储空间是2TB,但实际上这些空间并不是一下子就都给你的,基本上是遵循“用多少,给多少”的原则,系统动态地给你分配。这就涉及到了另一项关键技术——文件比对。对于云存储系统来说,应该尽量减少同一份文件的多次存放。如果系统检测到用户上传的是相同文件,云盘系统就只会保存一份,只是给拥有这份文件的所有用户都发一个指向源文件的链接,能够查看、下载。这也解释了我们向云盘上传一个很大的文件,却几乎能够“秒传”的原因,因为云盘系统检测到了我们所传的文件系统中已经有了。换句话说,就算我们删除了某些共享文件,但在系统中并没有删掉源文件。
文件比对的更高级应用就是增量同步。什么是增量同步?与增量同步对应的是全量同步。全量同步是指一次性同步更新整份文件,而增量同步只更新增加或改变的内容。例如,一份文本文件有10M,分别存放在A、B两个地方,假如在A地修改了文件,只改变了部分内容,那么,在B地是如何实现自动和A地的文件保持一致,并且网络的传输量最少?
常用的做法是将文件按照固定大小分成若干段,每一段就是一个存储块,至于这个值具体多大,则根据文件的类型和大小设定。然后每段生成一个HASH(哈希)码,把所有HASH码合并成一个HASH码表,最终就生成了整份文件的HASH码。通过这样的方法,系统只需要比较两份不同文档的HASH码是否相同就能知道哪个部分做了修改,修改部分就是增量部分,前面所说的文档相同比对用的也是HASH码。
什么是HASH码?文档的HASH码又是如何生成和比对的呢?HASH码是根据文件中的各个属性的数据,通过逻辑运算最终得到的数值。也就是说,不同的文件计算得到的HASH码是不同的。而且,文件的名称并不会影响HASH码,同样的文件不同的文件名,它们的HASH码也是一样的。因此,HASH码具有文件校验比对的功能,可以用来检查不同的文件是否一致,有无更新。网络上有很多计算文件HASH码的小工具,非常方便。接下来我们通过“HASH码计算工具”来做一个实验:在电脑上建立四份记事本文件,分别命名为“文件1.txt”“文件2.txt”“文件3.txt”“文件4.txt”,每份文件的内容及对应的HASH码如下表所示。
比较“文件1.txt”和“文件2.txt”可知,虽然改变了文件名,但因为文件的内容没有变化,其对应的HASH码也没有改变,而“文件3.txt”和“文件4.txt”都改变了部分内容,其对应的HASH码也发生了明显的改变。
以Dropbox的增量同步为例,每4M生成一个HASH码,然后更新的时候把码表和隐藏目录里存储的原码表做一下比较,发现哪几段做了改变,就只上传哪几段的数据。需要注意的是,虽然增量同步有一定的价值,但具有增量同步功能的云盘并不多,其主要原因是检测增量对服务器的运行速度要求比较高。况且随着存储设备价格的降低,还不如直接用全量同步了。
搭建专属私有云
对于经常出差、需要备份重要数据的人来说,他们往往会选择搭建一个专属私有云。而一款适合文档同步的工具可以给工作带来极大方便,如今能够实现文档同步的产品有很多,功能也各有特点,安装和使用方法也大同小异。因此,在准备搭建专属私有云之前,我们有必要来盘点国内和国外的一些文档同步产品。
1.国内文档同步产品盘点
(1)坚果云
坚果云是一款便捷、安全的专业网盘产品,通过文件自动同步、共享、备份功能,为用户实现智能文件管理,提供高效办公解决方案。
(2)有道云笔记
有道云协作是网易公司出品的一款基于资料管理和沟通的团队协作工具,与个人笔记无缝连接。有道云笔记采用了增量式同步技术,即每次只同步修改的内容而不是整个笔记。
(3)WPS云协作
WPS云协作是由金山软件股份有限公司自主研发的一款协同办公产品,它整合了WPS产品家族的所有服务。云协作通过文档中心、消息中心、安全中心和应用中心,无缝集成企业现有的通讯录和邮箱,帮助团队成员实现文档的多人实时在线协作,满足企业的协同办公需求。
(4)云盒子
云盒子是一款基于私有云架构的企业网盘类文档管理系统,将团队分散的文档、表格、图纸、视频等信息碎片集中存储,通过授权访问、变动提醒、操作日志、历史版本、内容保护、即时通讯、流程审批等功能,帮助企业构建透明、安全、移動的内部文档协作平台。
(5)百度云
百度网盘提供文件的网络备份、同步和分享服务,具有空间大、速度快、安全稳固、支持多终端同步等特点。
(6)Seafile
Seafile是一个开源、专业、可靠的云存储平台,解决文件集中存储、共享和跨平台访问等问题;除了一般网盘所提供的云存储以及共享功能外,Seafile还提供消息通信、群组讨论等辅助功能,帮助用户更好地围绕文件展开协同工作。
2.国外同步产品盘点
(1)GoodSync
GoodSync算得上是一款非常实用的数据同步工具,其最大的特点是操作简单以及具有双向同步功能。通过该软件可以轻松完成移动存储设置,并与GoodSync完成两台电脑数据同步。该同步工具还支持FTP同步,在操作系统上也发布了Windows版及Mac版。
(2)FreeFileSync
FreeFileSync是一款完全免费且开源的文件夹同步软件,简单易用而且具有比较功能,通过比较可以很直观地比较出两个文件夹之间的差异,并把比较结果显示在列表中,以便我们判断是否需要进行文件夹同步。
(3)SyncToy
SyncToy是微软在2009年发布的一款免费数据同步软件,功能也非常强大,界面相对其他同步软件较为美观,操作也非常方便。SyncToy可以同时管理多个目录系列,并能够进行合并两个文件夹为一个文件夹的操作。SyncToy同时支持三种模式,即synchronize(完全一致性,真正的同步)、echo(单向同步,从左到右同步,但无法从右到左操作)和Contribute(增量备份)。
(4)Allway Sync
Allway Sync是一款收费的文件夹同步软件,该软件据说采用专用算法,该算法不依赖于系统时钟的准确性,有助于防止数据丢失,支持双向同步,多文件夹操作,操作简便。
(5)ownCloud
ownCloud是一个自由且开源的个人云存储解决方案。与商业云存储服务不同,ownCloud可以自由获取无需付费,它可以被安装在个人服务器上,用户拥有控制和修改的权利。
我们可以根据自己的需求定位来选择一款文档同步产品。如果是大型的、企业级的需求则可选择Seafile、坚果云、GoodSync这样的产品;如果是个人的小团队需求,建议选择百度云、云盒子、有道云笔记等轻量级的应用。不同级别的产品,搭建服务器的要求区别也很大,有些产品明确要求只能是Linux系统,而有些基本上能适应当下主流操作系统。
3.案例解析
接下来,以“Seafile”为例,介绍如何为自己的团队搭建一个专属私有云。服务器配置说明:Windows Server 2008,32位,内存8G。
部署准备:
①官网下载并解压Seafile的服务器端和客户端。
②官网下载Python的2.7.11,32位版本。
服务器端部署:
①首先安装Python2.7.11,并将Python的安装路径添加到系统的环境变量中。操作位置是:计算机—属性—高级系统设置—环境变量—系统变量。打开命令提示符窗口,输入Python,Python已经安装成功。
②在Seafile服务器端文件夹下运行run.bat,启动Seafile服务器安装程序,在弹出的对话框中选择磁盘位置,该位置用于存储Seafile服务器的数据,建议选择存储空间较大的磁盘。点击确认后,Seafile将会在选择的磁盘下创建一个名为seafile-server的文件夹,该文件夹就是Seafile服务器的数据文件夹。
③右击Seafile服务器的系统托盘图标,选择“添加管理员账号”选项。在弹出的对话框中输入管理员用户名和密码。
④设置好管理员账户后,还需配置服务器的相关地址,否则不能进行文件的上传下载。
A.先用前面设置的管理员账号登录服务器的Web端,地址是http://<服务器IP地址>:8000。点击界面右上角的头像图标,选择系统管理,进入左侧的“设置”界面。
B.将SERVICE_URL的值配置成http://<服務器IP地址>:8000。
C.将FILE_SERVER_ROOT的值配置成http://<服务器IP地址>:8082。
客户端安装使用:
①官网下载Seafile客户端,有电脑客户端、移动客户端(Android版和IOS版)。
②用设定的账户登录,在客户端上指定Seafile的数据磁盘位置。
③点击“同步该资料库”按钮将该资料库与本地文件夹同步,就可以向资料库中添加文件,建立文件夹了,这样文档就会被自动同步到云平台。
事实上,Seafile是开源软件,搭建服务器的要求也不高。有很多人就把家里闲置的电脑拿来当作云存储服务器。只不过,用Windows服务器的使用人数不能太多,它不适合上百人的用户使用。如果用户需求量比较大,建议选择Linux系统的专用服务器。
总结
文档同步技术在我们工作和生活的方方面面都有应用,其价值已经得到普遍认同,实现的方式也是多种多样的。除了本文介绍的通过软件的方式搭建私有云外,还可以购买方便易用的NAS,有些家用型的智能路由器也自带了文档同步功能。关于文档同步的具体应用,我们将在下一期与大家详细探讨,敬请关注。(文/倪俊杰)