0%

个人数据同步/备份方案

相信很多人和我一样,总是在纠结要怎么保存自己的数据。工作、家中、出差、笔记本、台式机、热数据、冷数据、付费、免费,总是没有一个万能的方案。

我也曾经尝试过很多方案,包括但不限于:

  • NAS + 内网穿透工具(frp/nps/…) + 内网穿透服务器
  • NAS + 找ISP要外网IP
  • 第三方网盘(百度云盘/阿里云盘/115/iCloud/Google Drive/Mega/Dropbox/OneDrive/…)
  • Amazon S3
  • 自建网盘(Owncloud/Nextcloud/Seafile) + 服务器
  • 多设备同步工具(Syncthing)
  • Github

我会针对上述方案,分别说明个人体验中感受到的优缺点,然后给出我现在使用的方案。

方案列表

NAS + 内网穿透/外网IP

在各个网盘纷纷跑路、和谐数据、限速的当下,很多人都想要搭建自己的NAS,但其实大多数人的追求都是盲目的。NAS的优点固然很多,比如:

  • 没有被和谐的烦恼
  • 局域网内传输速度优秀
  • 随时能扩容
  • 众多NAS系统自带很多实用的插件和工具
  • 远程下载、挂PT
  • 看高清电影

但是也有很多缺陷是很多人没有深入了解的:

  • 搭建时忽略了硬盘的成本和NAS盘位的成本
  • 正版NAS如群晖的硬件性价比极低,而黑群晖需要考虑系统稳定性和内网穿透的问题
  • (黑群晖们)外网访问需要内网穿透,而内网穿透时通常传输速度得不到保证
  • 要保证数据安全需要组Raid,牺牲一部分存储容量
  • 为了充分利用NAS性能,需要考虑家中网络布线和路由器性能
  • 为了好好看片,又步入PT和HTPC的大坑

我相信,大多数人搭建完NAS,用了一段时间后就会发现,它的优点用不到几个,倒是坑会一个接一个地踩进去。

关于外网访问内网,有两种方式,一种是直接打电话给ISP客服,要求给外网IP,理由可以说自己家里有宝宝,需要装监控。但是据我所知现在可能联通还能给到外网IP,电信早就不给了。有了外网IP之后,可以通过刷路由器固件如梅林、老毛子等,使用固件中的如阿里DDNS等工具自动将IP地址解析到自己的域名来访问。于是这又涉及到购买域名或免费域名,以及刷路由器了……

如果家中网络没有外网IP,那就只能通过内网穿透。可以使用现成的方案如花生壳,也可以找一台有外网IP的电脑或服务器做中转,工具也有很多,如FRP和NPS,但无一例外付出的都是额外的金钱和精力,甚至需要一定的计算机技术。

我当年组建NAS时,硬件买了N54L(4个盘位)并装了黑群晖,买了两块西数3T红盘,为了刷路由器换了R6300v2,刷上了梅林改版固件,家里网线全部改成6类线。为了不浪费这台NAS,玩起了PT,赞助MT买了个账号。为了看局域网高清电影,买了芝杜Z9S和BenQ W1080ST投影仪。

现在呢,NAS在吃灰,硬盘有一次搬家时可能摔到了,有了坏道,没法用也懒得买新的。MT的账号因为好久没登录已经被清理了,投影仪几个月才用到一次,芝杜的盒子用来看看网络电视。

综上所述,我只建议两种人用NAS,一种是对数据安全性和隐私有极度追求的,一种是对高清蓝光电影有追求的。

第三方网盘、Amazon S3

网盘大家应该都用过,也没太多好说的,容量、速度、安全、价格这四个条件不可能同时满足。亚马逊S3也可以当一个网盘用,就是存储和传输都得收费,除了稳定性高,个人感觉没有优势。当然啦,S3本职也不是用来当网盘的。

自建网盘

自建网盘弥补了第三方网盘在安全性上的问题,当然只是在隐私这方面的安全性,存储方面的安全性取决于你在谁家的服务器上搭建(和自己不操作不小心),这也同样决定了价格、速度和容量。

自建网盘我用过Owncloud、Nextcloud和Seafile,其中Nextcloud是在Owncloud的基础修改的一个版本,它们都是基于PHP,体验下来如果服务器正常的话,其实运行效率没有想象中那么差。Seafile体验其实也和另外两个差不多,就是界面丑了点。

通常使用自建网盘的主要用途是:

  • 存储数据
  • 挂载数据盘实时同步文件
  • 分享文件

三者都能较好地满足这几个需求。数据存储自不必说,存储容量取决于你的服务器硬盘有多大。它们都有客户端,安装后可以和其他网盘一样在文件管理器中挂载数据盘,能和操作本地文件一样操作网盘中的数据,改动可以实时同步。文件可以分享,能设置分享有效期和密码,也能看到分享后文件被访问和下载的日志。

但是说到实时同步,就要说到增量备份的概念。一个很大的文件,有时候改动的可能只是一个小小的地方,如果没有增量备份,可能一个1G的文件每改动一个小小的地方都得足量上传1G的数据,将严重影响同步效率。当时能忍受Seafile丑陋的界面就是因为它是唯一一个支持增量备份的。后来Owncloud和Nextcloud也都出了这个功能,我又重新投向了Nextcloud的怀抱。只是谁能想到,它的Beta版增量备份功能直到现在也是Beta版……

Syncthing

Syncthing是一个在多个设备间同步数据的工具,刚看到它的时候眼前一亮,但实际使用下来一言难尽。它确实有一些优点:

  • 不需要中央服务器
  • 可以选择同步哪些文件夹
  • 第三个就想不到了……

但是优点同样也是缺点。由于它的实现方式类似BT,是点对点的传输,用到了很多第三方可以看作是志愿者的节点,因此传输速度很难得到保证,经常出现几个G的文件同步一整晚的情况。

在每次加入一个新设备、同步一个新文件夹的时候,都需要在其他设备上做确认操作。我经常遇到的情况就是,在公司将一个文件夹加入同步列表,回到家在家里电脑申请同步该文件夹,第二天到公司了,在公司电脑上同意该操作。而且因为中间节点的不稳定,有时候还收不到这个申请。

另外,在加入多个设备之后,文件的同步逻辑感觉相当混乱,由于没有中央服务器,A设备是从B设备还是从C设备拉取数据?B设备和C设备之间文件还没同步完成,两者不一样时,A设备拉去数据的逻辑又是怎么样的?我不知道源代码中的逻辑是怎么样的,总之,用了一段时间后,一片混乱,一堆冲突文件。

Github

自从Github的私有仓库数量没有数量上限后,它也变成了一个优秀的”网盘“。就两个缺点,一是单文件有100MB的限制,二是不能自动实时同步,需要手动用git工具同步。

个人方案

目前我自己使用的是混合方案:

  • 热数据用Github
  • 冷数据打包保存到网盘上
  • 温数据用自建网盘Nextcloud进行同步

热数据是指频繁更新的数据,一般不会是大文件,对于我来说就是一些工程文件,比如Unity项目、网站代码等。这种类型的数据搭配Git的文件忽略列表、提交更新日志、历史版本等功能,简直是绝配。服务器上代码还能通过运行定时脚本自动保持同步。

冷数据是指很少用到的归档数据,比如一个不再更新维护的项目、上家公司的文档等。这些数据可以直接(加密)打包保存到第三方网盘。我目前在用的是百度网盘和阿里云盘,容量大,免费,对速度不敏感,没有小电影不怕和谐,打包了因此也不是太担心数据泄露。多存几个地方,有备无患。

温数据就是介于上述两者之间使用频率的数据了,使用频率在几天-数个月不等,比如证件、当前工作的一些文档、临时数据等。我目前是购买了BuyVM家的服务器和存储块,512G SSD + 不限流量一个月4.5美金,虽然机器本身配置差一些,国内连国外的速度也一般,但用来运行自建网盘完全够用。即使服务器出问题数据丢了,自己电脑上也还有原始数据。

算下来也就自建网盘花了点钱,不管是易用性还是安全性上都令我比较满意。相较于NAS的臃肿、单一方案的不完美,这是目前我能想到的最好方案了。

最后,什么,你想要看高清电影?自行搜索Emby公益服,要什么PT和NAS。(需要扶墙就是了)