打造自己的MyLifeOrganized 2(MLO2)云同步

0x01 官方云同步,付费也很卡

MyLifeOrganized(MLO)是Windows平台下强大的GTD软件,PC版本和Android版本需要分别购买授权,云同步还要再买包月或包年服务真不便宜,关键是用了一段时间官方的云同步后,发现服务器(在国外)速度很慢还经常同步失败,用的很不爽。

0x02 屌丝的春天,免费云同步

就没有其他的同步方法了吗?有的,PC之间只要同步“.ml”文件就可以了,很简单。手机购买授权后也有wifi同步功能,能与PC软件同步数据。

最简单的同步方式就是:在公司电脑和家里笔记本都安装“坚果云”之类的工具来同步PC端的数据,再将家里ip和公司ip设置成一样,方便手机wifi同步,否则换个地方,IP变了,手机wifi同步的时候又要重新输一遍IP和匹配码。

当然,缺点也有。比如我在家工作需要VPN连到公司,IP不能设置成一样;打开PC软件的时候,“.ml”文件会被占用不能及时同步;外出的时候,没有电脑,手机不能立即同步,过后容易忘记。

0x03 私有云同步,纵享丝滑来

还有其他方案吗?当然有,俗话说方法总比困难多。

  1. 用FTP同步功能,就可以解决文件被占用无法立即同步的问题了;
  2. 通过域名就可以解决手机wifi同步需要频繁修改IP的问题;
  3. 软件部署在自己服务器上就可以解决外出无法及时同步的问题了;

玩起来相对复杂了一点,需要一台Windows服务器、FTP软件、一个域名。

  • 域名你可以用免费的花生壳之类的ddns服务,也可以像我一个购买一个域名再加上DNSPod,速度快很多;
  • 公网IP(不是固定IP哦,重启路由器会变的),家里可能没有公网IP,比如我用的铁通宽带,可以打电话到10086申请,一般都会给你;
  • 服务器,自己想办法吧,单独为这么个功能购买云服务器有点不划算。我刚好家里跑着一台Gen8服务器(装了Windows Server2012+Seafile作为NAS,24小时运行费不了多少电,当然也可以设置夜里自动休眠早上自动唤醒,私密性比那些免费的网盘好,又不用担心哪天网盘关闭的问题);
  • FTP我用的是FileZilla(尝试过用IIS自带的FTP,最后还是失败了,数据传输总是不成功);
  1. 总的思路就是在服务器上放一个 “.ml”文件,作为数据中心,通过FTP开放给PC,再做一个小软件开放给手机。
  2. PC软件通过FTP同步(也可以用含自动同步功能的云盘来进行同步,不过MLO软件打开的时候会占用文件,需要关闭后才可以同步,还不如FTP同步按一下F9就可以了);
  3. 服务器上需要安装MLO软件作为手机wifi同步的服务端,但是“.ml”文件又不能一直打开,否则文件被占用FTP就不能同步了。所以这里,我们需要一个小软件,当手机wifi同步的时候打开“.ml”文件,同步完成后关闭它。
  4. 小软件的原理也很简单:MLO软件打开后会监听21030端口(可以在注册表查看到该端口KEY_CURRENT_USER\Software\MyLifeOrganized.net\MyLife\WiFiSync ) ,手机wifi同步的时候会连接到这个端口。我们可以通过路由器上的端口映射功能,拦截该端口,将21030端口转发到服务器的其他端口,比如 21031。我们的小软件监听21031,当有连接建立的时候说明需要手机wifi同步了,这时候小软件立即打开MLO软件(打开“.ml”文件),再与真实的21030建立连接,然后将两个连接的数据包互相转发即可,其实就是一个简单的SOCKET代理。最后,当一段时间没有数据通信的时候关闭MLO软件(关闭“.ml”文件)。

部署的时候注意一下:

  1. 在路由器上将FTP端口映射出去,包括控制端口和数据端口;
  2. 路由器上将21030端口映射到服务器21031端口上;
  3. 服务器上安装MLO软件,并在 Tools|Options|Behaviour 页面,将“Close to system tray” 的对勾去掉。
  4. 小软件拷到服务器上,并配置MLO2Syncer.exe.config文件;
  5. 手机第一次同步的时候需要远程登录到服务器上,进行一次PIN码匹配;