压缩并加密在Dropbox上的数据

虽然标题写的是Dropbox,但实际上可以适用于任何云端个人存储服务。如Ubuntu One等。在这里就以Dropbox作为例子来说明如何压缩和加密自己在云端上的数据。

加密和压缩在云端的数据有什么用?

压缩内容

现在的云端个人存储服务都限定了一定的储存大小。比如Dropbox注册就只有2GB的空间,虽然能通过邀请其他好友注册等方式增加自己的储存空间,但最多也只能增加到5GB,容量总是有限的。压缩自己的文件就可以最大限度地利用这不多的空间,特别是,当个人文档都是一些很容易压缩的文件的时候,压缩就能取得更好的效果。

另一方面,压缩文件以后文件体积变小,在上传或下载的时候也能节省时间和带宽。并不是所有的云端服务都能在同步的时候先把数据压缩再通过网络传输的,所以我们要自己动手压缩。

加密内容

把自己的文件保存到一台不在自己掌控之中的服务器上,总让人感觉不放心。虽然提供云端服务的公司都表示我们保存在服务器上面的数据都是加密的,但是谁知道他们用的是怎样的加密呢?或者是根本没有加密?这样考虑以后,你还敢放心地把包含有个人重要信息的文件保存到云端吗?

为了把数据安全性掌握在自己手中,我们也要自己对数据加密以后上传到云端。这样就可以保证无论是谁,就算他能接触到服务器,知道服务器的加密方式,也没法得到我们的数据。

需要准备的软件

eCryptfs

eCryptfs是一个可进行透明加密的文件系统。其实现原理是将加密目录挂载到明文目录上,用户通过明文目录透明地存取文件,而最终的数据是以加密形式保存在加密目录上的。安装eCryptfs时会为用户生成密钥并要求用户给密钥设置密码。可以通过设置,让eCryptfs在用户登录的时候根据用户提供的登陆密码,解开用户的密钥,然后自动挂载加密的目录。

fusecompress

fusecompress是一个可实现透明加密的文件系统,我在以前的文章中已经对其进行过介绍

通过这两个文件系统,就可以压缩并加密我们要保存到云端上的数据。

具体实现的方法

先来看看整个设置的结构图:

从图上大概了解整个结构后,就开始动手吧。首先创建一个目录,这个目录是eCryptfs保存密文的目录,在这里我将这个目录命名为.Private。另外创建一个用于保存已压缩文件的目录,将其命名为.Zip。最后创建一个目录命名为.Cloud。

现在,需要把eCryptfs设置为,当登录的时候就将.Private挂载到.Zip。因为只有在用户登录之后加密文件系统才能挂载上来,所以就不能在fstab里面让fusecompress把.Zip挂载到.Cloud。为了让加密文件系统挂载成功以后才挂载压缩文件系统,需要创建一个脚本文件,内容如下:

#!/bin/bash

# 首先要等待加密文件系统挂载成功
echo "waiting for .Zip"
while ! df | grep .Zip >/dev/null
do
sleep 1
done

#判断是否已经挂载了压缩文件系统,若没有挂载就挂载上去
( df | grep /home/gs/.Cloud > /dev/null ) || fusecompress -o fc_c:zlib,fc_b:128,allow_other /home/gs/.Zip /home/gs/.Cloud

把代码中fusecompress的挂载参数改成你自己的,然后把这个文件保存为/usr/bin/mountzip,并给它加上可执行权限。

接着修改~/.profile文件,这个文件会在用户登录成功之后运行一次。在这个文件的末尾加上

mount_zip&

这样,在用户登录之后,只要像平时一样操作.Cloud目录下的文件,.Zip下就会保存着已经压缩后的文件。而.Zip目录是从.Private挂载上来的,所以实际上文件是被物理保存在.Private目录下的。文件首先被压缩,存入.Zip目录,然后被加密,最终存入.Private目录。

接着设置Dropbox。先删除Dropbox自动创建的~/Dropbox目录,然后手动创建一个名为Dropbox的符号链接,指向.Private。这样Dropbox同步的就是已经压缩并加密的文件了。

出于方便考虑,可以在.Cloud下创建几个目录以后,在家目录下建立几个指向.Cloud下目录的符号链接,这样可以更方便地访问那些需要保存到云端的文件。

来看看效果吧

下面是我的Dropbox目录,可以看到我的数据有1.7G,但是在Dropbox上却只使用了1448MB的空间。我的数据因压缩变小了250MB左右。但在这1.7G中有600MB左右的数据是没法压缩的音乐和图片,所以就相当于我的1.1GB的数据经压缩以后,变小了250MB,压缩率约77%,这还是很不错的。(我使用的目录和本文描述的略有不同,图中的.MyZip目录相当于本文中的.Cloud目录)

我已经这样子使用Dropbox超过半年了,没遇到过什么问题,只要不去动压缩文件系统的挂载参数,一般都不会出什么事情。

在开头也说过,这个方法不是仅适用于Dropbox的,任何云端存储都可以使用这个方法。只要把那个云端存储的同步目录删掉,然后创建一个同名目录指向.Private目录,就可以让它同步压缩且加密了的个人文件了。

相关文章:

  1. 用 fusecompress 压缩 LiveUSB 上的文件
This entry was posted in 技术向 and tagged , , , , , , , . Bookmark the permalink.

One thought on “压缩并加密在Dropbox上的数据

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>