Image Image Image Image Image

11

2 月

我在哪里,数据也就在哪里

  • By IanGoo

因为nCov肺炎疫情,今年的年关比较难过。一部分人开始了Home Office的生活——我就是其中之一。而Home Office有一个很要命的事情——数据无法到手。对于严重依赖电脑的办公室民工而言,这在很大程度上意味着无法正常开工。

所以,如何保证坐在家里的电脑前和坐在办公室前的电脑前能够获取的数据一样,这就成了保持高效工作的重要手段。而这也是本文需要介绍的重点——数据同步。

手动操作vs自动同步

我相信,绝大多数人都是这么用U盘的——

想到了某个文件,手动把它拖到U盘里。OK,很简单。这是一种“正确”的U盘使用方法。但是,如果我有这样一个需求:

在本地磁盘上有一个项目目录A,现在我想要在U盘上建立另一个目录B,然后让两者保持内容一致。

问我为什么要这么做?原因很简单——我想在另一台电脑上继续该项目的工作。而这个项目除了若干个主要的文件之外,还有一堆支持性质的文件,都不能落下。

绝大多数人的做法,可能就是在本地做完之后,将变更的文件拖拽到B当中。嗯,文件不多的时候,这么做很简单,但是如果你面对的目录里有好几层目录深度,目录里动辄几十个文件,你还能记得住吗?

那好,我把B整个删掉然后再重新将A复制进U盘行不行?

那当然可以,可问题在于,你确定吗?如果数据量多达好几个GB,这么做……你还真是闲啊……

追踪文件变更这种事情,交给电脑是不是更方便?

这就是“同步”的概念。

“同步”的概念,指的是保持多个位置的数据的一致性。我最早接触到“同步”的概念,还是在使用Windows Moible手机的时候,那时候需要在手机上安装Active Sync,电脑上安装Outlook,这样手机连上电脑可以使用这款同步软件同步Outlook和手机上的邮件、联系人、日程表等信息。

而本文我侧重介绍的是“文件同步”。简单点说,就是保持多个位置的文件或者目录的内容一致——包括本地位置和跨设备的情况下。

而U盘,正是最基础,同时也是最可靠的数据同步手段。上面所说的手动拽文件,就是一种手动“同步”的方法,显然效率低、花时间、麻烦而且容易出错。以为自己把新版文件装进去了但是到了家一看发现居然还是老版本的,这就很囧了。

所以,即便是U盘这样的基础同步设备,也可以使用一些软件进行辅助。

U盘同步

被遗忘的基本工具

在系统的右键-新建菜单当中,有一个很多人都忽视掉的项目:公文包(Briefcase)。很多人都以为这是个装B版的文件夹,显示一下“这里都是很重要的文件”的意思。其实不然。这就是系统自带的、最基础的文件同步工具。

你问我为什么不截张图看看?

……好吧……

在最新的Windows 10当中,公文包这个功能已经被毙掉了。这个小Feature是随着第一个全功能桌面Windows(也就是Windows 95)一起发布,在Windows 8当中遭到废弃,在Windows 10 Build 14942当中被彻底移除。而它的存在感仿佛从来都那么稀薄(阿卡林!)。

只要新建一个公文包,然后将A文件夹拽进去,A文件夹和这个公文包(姑且称为B)就会建立双向同步关系。如果A在本地,而公文包位于U盘,那么这就是一个天然的通过U盘进行同步的基础软件。只要将U盘插入含有A文件夹的电脑,点一下检查更新,它就会自动列出A目录当中那些文件在后来修改过,B当中哪些修改过,哪些是A和B都改过因此构成了冲突需要用户自己决定保留哪个版本。

我知道很多人还在使用Windows 7,Windows 7是包含这个小软件的,拿它来同步,其实是可以的。

但是时代变了。2020-1-14早已过去,Windows 7的历史已经结束了。Windows 10当中又没有这样的功能。微软狗贼!

其实不是微软狗贼。真的是时代变了。

微软随Windows 10附带了OneDrive,网络同步它不香吗?

哦哦……我仿佛按了一下快进。网络同步后面会介绍。

网络同步固然好,但是U盘还是有诸多好处,不可完全丢掉。

  • 首先当然是可靠性。只要别忘带U盘,或者没有悲剧到机器没有可用的USB接口,一般情况下U盘随时掏出来就能用,网络可能会掉线,U盘基本不会。
  • 其次是速度。USB 2.0的速度都能达到480Mbps或者换算过来60MB/s,这可比网络彪悍多了。USB 3.0以上更是速度飞起,我年后回办公室第一天,通过网络同步数据花了将近三分钟,而U盘……一秒而已。当然我用的是比较BT的SSD主控U盘和USB 3.2 Gen 2×2(USB-IF是傻逼)——就是下面这货。

如果真的还想保留U盘来充当最后的同步保障,用的又是比较新的操作系统,那么就只能通过第三方软件来实现了。

这里介绍两个软件,第一是FreeFileSync,第二是GoodSync。当然还有一些其它软件可以选择,如DSync、Synkro,不过它们要么功能比较弱比公文包强不了哪儿去,要么已经停止开发和公文包一样被作者干掉了。

FreeFileSync

FreeFileSync是一套开源、可免费使用的多端目录同步软件。

FreeFileSync

它的使用非常简洁明了,左侧是同步任务面板,每个任务指明两个目录,目录上方是两个巨大的按钮“Compare”和“Synchronize”,先点Compare对比两个目录,哪些是左边比较新,哪些右边比较新,哪些两边都做过更改形成冲突,一目了然。

FFS可以基本无限制免费使用,当然也可以进行捐赠,捐赠后可以获得“捐赠版”,捐赠版相较于普通版多了一些功能:

  • 并行同步
  • 自动在线更新
  • 便携版
  • 静默安装

所以这基本上就是一个自愿付费的模式,还是非常有爱的一个软件。日常使用完全可以用免费的,如果真的数据量非常大,或者有特定的需求,给作者买杯咖啡也是理所应当。

我么……

嗯,我是买了商业软件GoodSync,无他,功能更加强大耳。

GoodSync

GoodSync基本上可以认为是目前地表最强目录同步软件。

嘛……这个应该不算违反广告法,因为GoodSync确实很强。没有替代品的那种强(对头,包括FFS,功能上都远不及GoodSync)。

GoodSync 10

GoodSync的界面和FFS很相似,也是左侧为同步任务列表,右侧为两个可以同步的目录和文件差异列表。但是相似的表象之下,是GoodSync直接起飞的功能:

  • GoodSync能够支持远比FFS更多的同步目录类型,从本地目录、CIFS/Samba远程目录,到OneDrive目录、Amazon S3等等云端的目录,皆可同步。
  • GS有一个王炸功能——实时目录监控与同步。它会监控目录当中的文件修改情况,一旦文件有改动,会立即启动同步任务。FFS也有类似的功能,但是用起来比GS体验差很多。
  • GS的Portable版本是真·Portable版。它会在便携版上将安装所在的盘符替换成GSDISK://协议,即GoodSync安装目录,这样安装在U盘上,不论电脑将U盘识别成什么鬼盘符,都不会影响GoodSync的正常同步。
  • 跨界功能:GS甚至能够部分抢夺网络同步软件的功能,实现端到端的数据同步!这就很可怕了。

在GoodSync 10当中,GoodSync引进了GoodSync Network网络同步功能。任何一个安装了本地部署版本(而非Portable版本)的GoodSync都可以开启GoodSync传输协议(GSTP)服务器,服务器会定期和GoodSync的索引服务器通讯,告知自己的网络地址,而若另一台电脑上的GoodSync将同步目录设置为GoodSync网络同步协议,它会通过GoodSync索引服务器获取GSTP服务器的位置,建立P2P连接,从而实现数据的传输。和多数网络同步软件一样,GSTP是块级传输,可以有效节约网络流量开支,缩减同步时间。

听着耳熟得很……

这……不就是很多网络同步软件特别是去中心化网络同步软件的套路吗?

也不尽然。毕竟GoodSync还是有一个自己的“中心”的,这个中心就是GSTP服务器,尽管它具备一定的去中心化特征(连接P2P情况下数据流不通过索引服务器),但是当超过两台设备连接的时候,GSTP服务器的可用性也就等同于整个同步网络的可用性。一旦GSTP服务器掉线,整个同步网络也就掉线了。

另外,GoodSync还有一套锁死机制,当两个计算机之间正在进行数据同步的时候,其他设备上若有数据变更,就只能等待同步完成后再进行同步。本来这个机制是在本地同步的时候保护数据完整性的,但是既然都引进了块级传输,这个机制是否还有保留的必要就要打一个问号了。GSTP是我用过唯一一个有这种锁止机制的网络同步工具。

最后,GSTP在P2P情况下数据流不经公共服务器中转,但问题在于公共服务器不设在国内,经常出现P2P连接失败的情况,这时候GSTP的策略不是重试,而是——中转。而公共服务器——又不在国内,中转的速度也就极度感人。

最后的最后——GoodSync的授权并不算便宜,用它部署网络同步,一台电脑就得买一个License,犯得上么?大把的免费网络同步工具不香么?

所以,GoodSync我认为最合理的使用方式,是买一个GoodSync2Go的License(尽管更贵一些),然后将它安装在一个U盘上实现U盘本地同步。

顺道说一下,GoodSync还有移动版和群晖版,都是免费的,但是只提供GSTP服务器。

网络同步

随着网络的普及,U盘的存在感也就越来越低。自然,数据同步也需要与时俱进,现在我的主力同步工具正是网络同步工具。

提起云存储,国内基本上是百度云一家独大,但是百度云很显然也是比较坑爹的。免费用户限速自不必说,曾经的百度云同步,也已经被百度放弃了。

在若干年以前,百度云同步是我的主力同步工具。那是一个百度云还不限速的时代。百度云事实上有两个客户端软件——百度云,和百度云同步盘。

前者基本上就是替代浏览器的,而后者就牛X了,指定一个本地目录,指定一个云上目录,它会保持两个目录里的数据完全一致。

作为用户,你喜欢哪个?本设计狗表示云同步才应当是本尊嘛……然而,百度给了我一个大大大惊喜。百度云活到了现在,同步盘早就成了弃儿。

原因很简单——绝大多数用户压根就没把百度云当成OneDrive、iCloud或者Dropbox的国内替代品,而是将它当成了资源交换中心。百度云依靠早年的免费,积累了巨大的用户惯性,再加上在技术处理上便于共享,因此百度云在事实上成了国内用户数据共享的标准。以至于在现在还有很多斯德哥尔摩症候群患者在替百度云辩护。

图片来自B站

而百度云在技术策略上也迎合了国内知识产权意识淡薄的用户的需求。分享型网盘用户经常上传体积巨大的盗版视频、软件之类的数据,而百度云提供了TB级别的存储空间——这两者看起来矛盾?并不矛盾。因为盗版资源大量存在重复的现象。用户A上传了一部盗版电影,用户B也上传了同一部盗版电影,百度只需要Hash一下,发现这俩人上传的电影早已有另一个用户C上传到云里了,那么A和B用户就会发现卧槽,黑科技!极速秒传!其实,在百度的服务器里只存了一个数据,只是将访问权限开放给了A、B、C三个用户而已。

倒是像我这样用于同步个人数据的用户,那才是百度云头疼的用户。我上传了一份我自己写的文档,肯定没有第二个人上传相同的东西,它得专门为我这一个用户划出存储空间来,而且我这样的货说不定还会上传别的东西——毕竟TB级空间嘛,最后塞满了TB级的独一无二的数据,一点空间节约都没有。

在这样的商业策略推动下,百度云同步死球,可以理解,可以理解。

所以百度云给我滚蛋吧。

各种云

百度云这种我看来很恶臭的商业模式自然是让我没法用了。那么云服务有哪些能用呢?

我能想到的有好几个:iCloud、OneDrive、Dropbox、Mega、坚果云。

iCloud?Emm我又不是重度苹果用户,仅有的苹果产品也就两部上古时代的iPhone 5s、iPhone 7 Plus和一台上古时代的iPad Mini 4。而我的非苹果设备……一台群晖NAS、一台NUC跑Windows 10,一台台式机跑Windows 10和Manjaro Linux双系统,一台笔记本跑Windows 10和Manjaro Linux双系统,另一台台式机跑Windows 7和Windows 10双系统,另一台笔记本跑Manjaro Linux。非苹果设备比苹果设备多得多得多。而且iCloud在Windows上捏着鼻子也不是不能用,在Linux上……Emm。算了不想了。

OneDrive,Windows上自带,然而因为众所周知的原因在国内的访问速度只能是我了个去,而且网页版本还因为众所周知的原因一般上不去。另外Linux此时再度因为言语过激退出直播——当然不是没有解决方案,onedrive-d可以实现Linux下的OneDrive同步,不过总归第三方解决方案没有官方解决方案可靠。

Dropbox和Mega,再次因为众所周知的原因,不想了。

挑来挑去,坚果云。

我的感受——坚果云是国内Dropbox的完美替代品。它是像我这样将网盘作为个人数据同步基础设施使用的用户的极佳选择。

坚果云的几个我认为非常不错的Feature:

  • 同步为基础。坚果云的客户端真的就是一个同步软件,类似曾经的百度云同步盘和OneDrive,本地做出修改,即时上传,云端有更新,即时下载。
  • 真·全平台。Windows、Android、iOS全面覆盖,甚至官方提供了Linux客户端,极好极好。
  • 提供WebDAV接口。这极大扩展了坚果云作为云端基础设施的一些Hacker玩法的可能性,如调用坚果云的WebDAV作为Joplin的同步接口。

它的收费策略也很容易理解。免费用户容量不限,但是一个月只有很有限的流量配额,收费用户容量有限,但是20GB起步的基准容量加上购买赠送的容量,轻松就可以达到40GB以上,应对一般的用户数据同步绰绰有余,而且流量不限。

这样优秀的产品,当属国内云存储行业之光了。

我买过两年的坚果云。但是最后还是转移了。

无它,我还是决定将数据控制在自己手里。我买了台群晖DS218+。

私有云存储

群晖,好啊……真香……

想着自己上百G的数据安心存放在家里角落处的两块硬盘上,还是SHR冗余,就觉得安心。而且6TB呢,相当够用了,比百度云还大。玩法也比百度云多得多,文件托管那是基础操作,LNMP真好玩,WebDAV 6到飞起,个人音乐台和视频台爽得很。

好吧,回归基础操作——文件同步。

群晖DSM提供了很多文件同步的选项,真的,很多……

  • 群晖自己的解决方案,老的File Station,新的Drive。
  • DSM自带提供rsync。在Linux下这是个同步神器。但是有点复杂,我最终没有选择这个解决方案。
  • DSM可提供公网可访问的Samba、WebDAV协议,可以让GoodSync这样的同步软件使用。
  • 套件中心里有GoodSync Server,这样DSM天生就成了一个GSTP服务器。

但是我的最终解决方案是——都没有选。我选择了一个国产的软件——微力同步(VerySync)

微力同步,基本上可以理解为以ResilioSync为基准进行二次开发的Syncthing。这两个又是个啥?

ResilioSync,旧称BTSync,是由BitTorrent开发的一款网络同步软件。他最大的特点就是点对点、去中心化。

像OneDrive、坚果云这样的,属于点对服务器、中心化同步网络。GSTP,属于点对点、中心化同步网络。这两类都属于“中心化”的同步网络,这个“中心”一旦瘫痪,整个同步网络就挂了。

去中心化同步网络的优势就在于——用户可以以一个常态在线的设备作为枢纽,维持整个同步网络的基本运行状态,但是即便是这个枢纽挂了,也并不影响整个网络的正常同步操作。

举个例子,我现在常态化接入同步网络的有三台电脑、一台手机、一台NAS。NAS作为常态在线设备,自然是被当成同步枢纽在用的,任意电脑上做出的修改都会上传至NAS,其他设备上线后,NAS会将更新后的数据分发同步到其他设备。但是某天,家里断电,网络断开了。NAS作为枢纽也就挂了。这时候我的做法就是打开了旁边的笔记本,让办公室的台式机和笔记本同步,下班后,将笔记本带回家,让NAS和笔记本同步,数据恢复。

若使用GSTP,直接就无法同步数据了,除非重开一个GSTP服务器,那样就比较麻烦了。我就只能掏出U盘来同步了。

ResilioSync在海外可谓是大名鼎鼎,但是在国内因为众所周知的原因,无法正常使用——等等。不是点对点吗?这照理说应该和长城没关系啊?

哎,和GSTP一样,要实现P2P连接,电脑首先得知道这两个点都在哪儿。这就需要一个公共服务器来实现,若这个服务器被干掉,那么这个服务也就没法用了。再加上ResilioSync现在也开始收费了,所以更没有理由用了。

开源的Syncthing就成了极佳的替代品。但是Syncthing的服务器在国外,也很不稳定,这也是为什么我使用VerySync的理由。

微力同步的优势我认为的有:

  • 真·跨平台。支持Windows、Mac OS、Linux,支持群晖、威联通,支持Raspberry Pi,支持OpenWRT和梅林插件(路由器狂喜)……甚至还有一个AirDisk硬盘盒,也将内置微力同步作为卖点。一个小盒子就能实现网络同步,如果只是要求使用微力同步的话,这个小盒子倒也不错。
  • 速度比较快,而且比较稳。
  • 更新很勤快。

当然,问题也有,不过不在用户层面上。Syncthing社区指控微力同步违反了Syncthing的License。我还是希望VerySync能够澄清和Syncthing之间的继承关系。Syncthing基于MPL2.0分发,完全支持在Syncthing基础上的二次开发,只需要做一件事——同样以MPL协议发布微力同步的源代码。这并不抵触目前已有的“专业版”可以让开发团队获利。当然,MPL协议也允许通过接口调用不公开的专有代码,只需要检查这些代码是否侵犯专利,总体来说MPL协议已经非常宽松了,还是希望微力同步能够有更好的版权意识,即便是开源协议也是如此。


OK,以上大致是我自己经历过的一些文件同步服务,从本地到云端,从公有云到私有云,也算是比较全面了。

数据同步给我带来了很多便利,最重要的一点是——Home Office变得简单无比。想象一个办公室电脑和家里的电脑完全状态一致的状态,究竟是在办公室端着舒服,还是穿着睡衣,在家里吃着薯片刷着动画干活舒服呢。

Tags |