丁宇 | DING Yu

我的移动Mac解决方案

因为颈椎病的原因,我不堪忍受每天背着重达3公斤的MBP上下班长途跋涉,因此在公司申请了iMac。可是如何使两台电脑的数据保持同步?对于多少有些数据洁癖的人来说,这可是很重要的。

我所说的数据同步,不仅仅是指某个文件夹或某些程序的数据保持同步,而是当我需要时,我可以完整地使用MBP上的全部数据。比如我的照片、音乐、邮件、Adium聊天记录,乃至各种系统设置、自己编写的cron脚本和通过Port安装的软件包。简单地说,就是两台电脑的数据必须保持严格一致。

有人说这不难,市面上有很多现成的方案。开始我也是这么想的,但我查阅大量资料并逐一实践过去后,发现它们几乎全都不可行,好在最终我找到了自己的解决方案,这篇小文就是可谓一部血泪史。

Dropbox/SugarSync

这是我最初想到的方案。它们设置简单,并且因为支持增量备份,我不需要太多的存储空间和高速网络,花费虽然高了些但还勉强可以接受。

但试用下来很快发现两个问题:一是我严重地低估了每天使用电脑所产生的数据量,大量的数据在备份时还好,但在恢复时就会慢得无法接受;二是对于一些跟启动有关的文件,因为在恢复时系统肯定已经启动完毕了,所以此时再恢复它们就会失效或者冲突,并且这一点非常麻烦。

因此不仅是Dropbox/SugarSync不可行,其它的网络同步方式也都行不通。既然如此,要传输数据只能靠外置存储了。USB速度不够快,eSATA在Mac上没有接口,所以唯一可用的就是火线800,也就是1394B。下面就要考虑如何利用外置硬盘同步数据。

Apple Backup、Time Machine和Carbon Clone Copy (CCC)

这三者都是非常漂亮且稳妥的数据备份方案(Apple Backup不能备份所有数据),前两个是官方软件,老牌的CCC则有很好的口碑,所以我开始的想法是:能不能利用它们把数据备份到硬盘上,然后在另外一台Mac上恢复?

查阅资料后放弃了此类方案:它们无一例外不支持增量恢复,要让我每次在使用电脑前都花数小时恢复数据,那我肯定是疯了。

rsync及类似的实时同步工具

rsync还算是一个基本靠谱的方案,经过简单的测试,rsync配合cron脚本,可以比较好的完成两块硬盘间的实时同步工作。

rsync唯一的缺点是:它是黑箱的,你不知道在同步的过程中哪些文件出了问题,并且即使你愿意去看log,手工处理问题的成本也高到了你没办法做这事儿。

不过,既然已经用了外置硬盘,已经能够忍受rsync所带来的磁盘性能的降低,何不直接……

把OS X安装在外置硬盘上!

这是我最终选择的方案。具体地说,我是这样设置的:

  1. 买了320G 2'5寸硬盘,和元古双火线800接口的硬盘盒,拿到手才想起来这硬盘盒居然比硬盘还贵;
  2. 把硬盘分成两个区。一个是大容量的主分区,另外一个用来存放音乐、电影、下载和临时文件。这个分区被我命名为Second Sun,玩过COD 6的人应该对这个名字有印象吧。至于为什么要给硬盘分区,一会儿再说;
  3. 用CCC把MBP上的硬盘数据整个复制到外置USB硬盘的主分区上,然后把启动磁盘设置为外置硬盘并用它启动,此时算是完成了基本的工作,如果你不想继续折腾,到此为止也是可以的;
  4. 把主分区上所有你认为不涉及到隐私的数据,都复制到另外一个分区上去(对我来说就是那块Second Sun),然后在终端下用ln命令把这些目录链接回来;
  5. 如果你用Time Machine的话,你需要修改它的配置文件(一个plist),才能让它不会忽略/Volumes,具体方法Google即可。

现在来解释一下为什么要分区,并把不敏感的个人数据从用户目录中拿出来。这是因为我觉得比起一部电脑来说,一块硬盘丢失的可能性大大提高。一旦丢了,各种私人敏感和工作相关的数据都会泄漏,这可不是闹着玩的!因此必须对这些数据进行加密。

从易用性的角度考虑,OS X自带的加密方案FileVault是个很不错的选择。FileVault会对整个用户目录进行加密,而且要开启FileVault,你必须保证分区剩余空间至少是已使用空间的1倍,因此把大量的非敏感数据转移出去,既可以节省空间,又能大幅度地减少FileVault加解密的时间。

FileVault的负面影响

第一次使用FileVault的经历,大概比做一场恶梦好不了多少。

首先,如前面所说,FileVault要求用户目录所在的磁盘剩余空间,必须大于用户目录已经占用的空间,换句话说,FileVault使得硬盘的容量至少直接减少30%。

其次,如果你在开启FileVault时选择了“安全抹除原有的未加密数据”,那么在相当长的时间里你的硬盘都是满负荷工作的,因为所谓“安全抹除”,就需要在硬盘保存原有数据的扇区位置上进行大量的写操作。我一共开启过2次FileVault,平均来看它需要半个月的时间才能完成这个工作。在这段时间里磁盘性能会低到什么程度呢?这么说吧:连收到一条Adium的消息,UI都要停止响应3秒左右。一点不夸张,我当时和朋友聊天前都要先解释一下。更搞笑的是,两次安全抹除无一例外以失败告终。每次OS X在折磨我许久后,都弾出个框告诉我安全抹除失败。哦,对了,这个框不是在你打开FileVault的设置界面后弹出的,而是在操作电脑的任何时刻都有可能弹出来……这东西真不是Apple的临时工做的?

再次,开启FileVault后,Apple禁止在用户操作电脑时使用Time Machine备份,要备份只能在注销账户时。好么,它不是要花上半个月时间安全抹除吗?所以如果你刚开启FileVault,然后接上备份硬盘,规规矩矩地从系统注销,运气好的话你可以马上看到系统开始备份,但进度条绝对连动都不会动一下,我有一次等了一夜后早上起来看到进度条大概走了1/100。等吧,等安全抹除结束后就没这么慢了,你顶多需要猜测在注销系统后几秒、几分、还是几小时后TM会开始备份,因为注销后Apple不会给你任何有关的提示或按钮。

再再次,FileVault让Time Machine的时空隧道失效。你无法再使用官方提供的界面恢复单个文件,当然了,通过Finder手工恢复仍然是可以的。如果你看懂了的话,本段第一句是个一语双关的冷笑话。

最后,FileVault不支持OS X的“迁移助理”。用过迁移助理的人都知道这是个多么神奇的程序,它可以把你的数据几乎毫发无损地复制到另外一个OS X里,Time Machine和CCC都是整盘复制,而迁移助理能做到只复制用户数据(不仅仅是用户目录里的)。但对于开启了FileVault的用户数据,迁移助理无能为力。因此上次为了解决OS X 10.6.5更新带来的WIFI失效问题,我一狠心先备份数据再重装系统,结果恢复数据时十分杯具的只能先关闭FileVault、迁移,然后再开启,又是一次上述的痛苦过程……

当然了,数据加密就像数据备份一样,只有在出问题时,才会知道其好处,所以至少我现在不担心数据泄露或遗失。我使用这个方案有几乎5个月的时间了,成功减负以后我还能带着iPad或一本书在地铁上看会儿。


  1. khsing @ 2011-02-21 08:08:00 +0800:

    这个方案可能已经是目前最快好省的一个方案了,最大的问题可能是FW800的速度还是比STAT接口慢。

    要是有个软件能把数据同步到云端,重点是能和系统结合紧密就太好了。

    另外我也买过一个元古的fw800 2.5的盒子,现在有问题是老断?你有遇到没?好像是线的问题。

  2. [email protected] @ 2011-02-21 17:09:35 +0800:

    楼主这么写,估计苹果粉会失望的:Mac软件怎么会有这种事情呢!一定是楼主的问题……

  3. 丁宇 @ 2011-02-21 18:19:11 +0800:

    @khsing 遇到过,盘古给的线太破了!我自己买了一根放在家里用,公司则用火线+usb线双保险,有时盘古的线出问题,起码硬盘能正常启动。

    @nothing 这算什么,我骂Apple不是一天两天了,比这个狠的多了去了。

  4. RevolutionMX @ 2011-02-26 02:27:32 +0800:

    thunderbolt一出, 这方案看起来更有价值了...

  5. 丁宇 @ 2011-02-26 02:34:58 +0800:

    @RevolutionMX 是喔。不过我打算把我的MBP用到2013年,那是估计已经发展成Lightning了吧。这个笑话有点冷……

  6. RYAN @ 2011-03-14 08:49:10 +0800:

    我觉得有点小题大做了 虽然我也有数据洁癖(不重复保存数据copy)

  7. Sparkle @ 2011-03-24 01:18:29 +0800:

    直接把用户目录放在移动硬盘就行了,何必把操作系统也放出去呢

  8. 丁宇 @ 2011-03-24 18:46:31 +0800:

    @Sparkle 因为还有一些设定和软件什么的,比如Port安装的东西,hosts文件等等。

  9. robin @ 2011-06-18 10:12:25 +0800:

    icloud出来了..

  10. 海晓 @ 2012-06-10 14:07:45 +0800:

    我的方案更简单暴力,我把机器一直开着,用花生壳连着ssh,需要的时候就连进去.基本上没有失败的机率