文件备份技巧:组合"虚拟加密盘"和"网盘"
今天要讲的招数,其实在3月份的博文《Google Reader 之死——原因分析、应对措施、教训》中已经稍微提到过了。当时俺承诺说:抽空单独写一篇介绍,所以就有了今天这篇博文。
在进入正题之前,先稍微做一下名词解释。"网盘"就不用解释了吧?大伙儿应该都明白。"加密盘"这个概念,技术菜鸟可能没听过,俺稍微解释一下。
磁盘加密有两种常见的类型:物理加密盘 和 虚拟加密盘。下面分别介绍。
◇物理加密盘
磁盘加密工具直接对你的某个分区(或整个硬盘)进行加密。加密之后,该分区(或硬盘)上存储的数据全部变成密文。即使有人盗取你的硬盘,也无法读取其中存储的数据。
◇虚拟加密盘
加密工具先创建一个虚拟分区。这个虚拟分区其实对应于物理硬盘上的一个大文件(以下称"卷文件")。你创建的虚拟分区有多大,这个"卷文件"就有多大。然后捏,加密工具可以挂载(Mount)该文件,挂载之后,你的系统会多出一个盘符。给你的感觉就好象多了一块硬盘(虚拟硬盘)。你存放到这个虚拟硬盘上的数据,都自动被加密。
◇优缺点对比
"虚拟加密盘"的优点 和 "物理加密盘"的缺点
主要就是便于备份。因为"虚拟加密盘"说白了就是一个大文件,你只要把这个大文件 copy 到其它地方,就相当于完成了虚拟盘的备份。
而"物理加密盘"要备份,就相对麻烦一些。你需要使用专门的磁盘备份工具(比如 Ghost)
"物理加密盘"的优点 和 "虚拟加密盘"的缺点
对于操作系统的系统分区,只能采用"物理加密盘"的方式,而无法采用"虚拟加密盘"的方式。
★"加密盘"搭配"网盘"的好处
所谓的"加密盘搭配网盘",其实说来很简单,就是找一个带同步功能的网盘。然后把你本地的加密盘文件同步到网盘上(再啰嗦一下:是同步加密盘的"卷文件"本身,而不是加密盘里面的文件)。这么干有如下几个好处
◇优点之一:"保密性"
这个好处是最明显的。因为你同步到网盘的是"加密盘文件",别人很难偷窥你上传的数据。至少可以防止如下几种情况。
1. 防止网盘提供商偷窥
大伙儿千万不要相信网盘提供商,美国的网盘提供商会被 NSA(美国国安局)偷窥,中国的网盘提供商会被朝廷偷窥(金盾工程)。
2. 防止上传过程的网络监视
除了网盘提供商的风险,还有数据传输过程的风险。因为有些网盘在同步的时候,没有进行加密传输(比如某些国内网盘)。在这种情况下,一旦有人对你的网络传输流量进行监控(术语叫"嗅探"),就有可能拿到你同步的所有文件。
3. 防止网盘被入侵
即使网盘帐号被盗,入侵者拿到的也只是加密盘——看不到你原始的数据。
不要以为网盘的密码复杂了,就不会被盗。有些时候不是你的密码出问题,而是网盘提供商出问题。即使是大名鼎鼎的 Dropbox 也曾经出现过严重的安全问题
◇优点之二:"可用性"
这个好处也很明显,因为你使用了网盘,提高了数据的"可用性"。即使你电脑的硬盘坏了、家中失火了、家中被盗了、遭遇地震了,都不用怕数据丢失。
◇优点之三:降低对"云端应用"的依赖
有些同学看到这个小标题,可能会感到奇怪并反问——"网盘"不也属于云端吗?别着急,请听俺细细道来。
就拿本月初刚刚关闭的 Google Reader 来说事儿。
俺的读者中有很多 GR 的重度用户,他们不光用 GR 来阅读博客,而且用 GR 来保存自己喜欢的文章——每当看到一篇好文章,就"加星"。也就是说,这些同学不光拿 GR 当阅读器,而且拿 GR 当资料库。一旦 GR 关闭,那可就麻烦啦!
再来说说俺的做法。
俺也是 GR 的重度用户,但是俺不依赖 GR 的"加星"功能。每次看到一篇好文章,俺会把文章的内容(包括内嵌图片)都复制到本地的资料库。这个资料库存放在"虚拟加密盘",然后俺把"虚拟加密盘"同步到某个网盘上。
这么做的主要好处是:你个人的数据还是放在本地而不是云端,网盘只是用来备份。所以 GR 关闭不影响俺收藏的文章。另外,即使俺用的网盘倒闭了,也只需要另外注册一个免费的网盘,然后重新同步一下加密盘。整个过程很简单,点几下鼠标就搞定了。
★磁盘加密软件的选择
在《如何保护隐私[1]:关于软件和服务的选择》一文中,俺提到商业公司和非营利组织的差异,也提到开源软件和闭源软件的差异。那篇博文提到的原则也适用于磁盘加密工具的选型。比如10年俺用的是 PGPdisk,前几年就改用 TrueCrypt。因为 PGP 是商业公司(已经被 Symantec 收购),而 TrueCrypt 是开源组织维护的。
到目前为止,TrueCrypt 是最靠谱的磁盘加密工具。这玩意儿不光功能齐全,而且应用很广;当然最重要还是它的坚固性——据说美国 FBI 碰到嫌犯使用的 TrueCrypt 加密盘也束手无策。
关于 TrueCrypt,俺在2011年写过一篇介绍《TrueCrypt——文件加密的法宝》。没用过的同学,不妨先看看。
★网盘的选择
◇容量
显然,免费空间越大越好。这个无需多解释。
*上有一个网盘对比清单,里面列出不同网盘的免费空间大小。
◇网速
通常来说,提供网盘的公司,服务器速度都不会慢。但是天朝是一个奇葩的国家,GFW 把墙外的很多网盘都给封了。
如果你要用网盘来同步"加密盘",考虑到加密盘都比较大(通常都是 GB 级别),你要么使用墙内的网盘,要么使用墙外尚未被封的网盘。
◇单文件大小上限
很多网盘都会限制单个文件的大小上限。详情请看上述网盘对比清单中的 "Maximum per-file size" 这一列。
使用本文的方案,你最好找一个文件大小无上限的网盘。
如果你使用的网盘有文件大小上限,并且该上限小于你的加密盘"卷文件",那在同步之前还得先分割"卷文件",太麻烦了(如何分割加密盘的卷文件,待会儿介绍)。
◇是否支持(字节级)差异同步
带同步功能的网盘,几乎都支持文件级的差异同步(只上传修改过的文件)。但很多都不支持"字节级"的差异同步。
采用这种同步方式,网盘客户端会分析某个文件被修改的部分,然后只上传修改过的那些字节。这里面用到一种技术叫"差分编码"(洋文叫"Delta Encoding"),有兴趣的同学可以看*"这里"的介绍。
对于本文介绍的招数,字节一级的差异同步很重要。刚才说了,"卷文件"通常比较大(GB 级别)。如果网盘客户端不支持"差分编码",每次修改过加密盘里面的内容,就需要把整个"卷文件"上传,(时间和流量)太不划算啦。
在知名的网盘中,Dropbox 可能是最早实现"字节级差异同步"的。因为这玩意儿太技术化,很多网盘的介绍资料都没有提及。所以俺也不太清楚哪些网盘支持"字节级差异同步",哪些网盘不支持。
如果你想知道自己使用的网盘是否支持,可以做个小测试。假如你手头已经有一个加密盘(至少是上百兆的),先把加密盘的"卷文件"同步到网盘。然后在加密盘中"修改某个小文件"或"增加某个小文件"。然后再把加密盘的卷文件同步一次。如果第二次同步很快完成,说明该网盘的客户端支持"字节级差异同步"。
有读者在留言中提出质疑,加密盘到底能不能使用"差分编码"。于是俺在《TrueCrypt 使用经验[1]:关于加密算法和加密盘的类型》一文中专门增加了一个章节——"磁盘加密的操作模式",介绍大部分磁盘加密工具(包括 TrueCrypt)使用的磁盘操作模式(XTS 模式)。
(补充一下)某热心读者在留言中提醒,*的网盘对比清单,里面有列举某些支持(字节级)差异同步的网盘。关注此功能的同学,请自行到该页面上搜索 delta sync
★常见问题解答 (FAQs)
◇磁盘加密工具会锁住加密盘的"卷文件",导致无法同步
几乎所有的磁盘加密工具,当挂载虚拟加密盘的时候,都会锁住加密盘对应的物理文件。"卷文件"一旦被锁住,就无法直接对其进行读写——包括网盘客户端也无法读写这个文件。
解决方法就是:先"卸载"(Umount)加密盘,然后再同步。换句话说:挂载加密盘的时候不要同步;加密盘卸载之后再同步。
比如你可以利用睡觉时间或吃饭时间,卸载加密盘,然后同步。
◇"卷文件"大小超过网盘"单文件上限"
碰到这种情况,俺首先强烈建议换一个网盘。
如果你实在不想换网盘,可以考虑把加密盘分割之后再同步。但是这么干会比较麻烦,而且分割之后再同步有一个缺点:你需要占用两倍的本地硬盘空间。
分割文件的工具很好找,Google 上能搜到一大把。
对于 Windows 用户,名气比较大的是 jsplit.org/windows/">hjsplit(这玩意儿支持的平台很多,连 DOS 都支持)。
对于 Linux 用户可以直接用命令行的 split 分割文件,用 cat 命令合并分割后的文件。
除了用专门的文件分割工具,还可以考虑用压缩工具进行分割(7Zip 和 WinRAR 都支持分文件压缩,类似于"文件分割"的功能)。
但是切记一点:加密内容是难以压缩的(看过"密码学"和"信息论"的同学应该知道,加密之后的"熵"极大,再牛的压缩软件也压不下来)。所以,使用压缩工具对加密盘进行"分文件压缩",一定要关闭压缩选项(对于 7zip,在"压缩等级"那个选项中选择"仅存储")。
◇"卷文件"大小超过网盘总容量
碰到这种情况,你有两个选择:
1. 换一个空间大的网盘
2. 申请多个网盘帐号,然后使用前面提到的"分割文件"的方案——把加密盘的"卷文件"分割成 N 块,分别同步到不同的网盘。
对于使用 Dropbox 的同学,很可能会碰到这种情况。Dropbox 有很多优点,而最明显的缺点就是空间小