使用getmail备份imap(例如gmail)服务器上数据的方法。

原因

随着7.1的到来,诸位geek最重要的事情就是备份google reader的数据了。很多人都在讨论gmail还要不要用。

废话,当然要。这么好的服务,为什么不用?

只是随着google reader的事,在用gmail的时候也得留个心眼。平时数据勤备份,不要所有的内容都绑定到这个邮箱上,否则有得你哭的。

安装和配置

getmail是一个用于将远程数据取到本地的系统,和fetchmail是一类东西。废话不多说,先装getmail。

sudo aptitude install getmail4

之所以用getmail不用fetchmail,是因为fetchmail我搞不定。而且getmail比较容易备份到指定地点。要是输出能gzip掉就更好了。

建立~/.getmail目录,下面放一个文件,例如gmail

[retriever]
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
username = [username]
password = [password]
mailboxes = ("[Gmail]/所有邮件",)
[destination]
type = Mboxrd
path = ~/shell/gmail.mbox
[options]
read_all = false
delivered_to = false
received = false
verbose = 2
message_log = ~/.getmail/gmail.log

username填你自己的用户名,普通用户不需要@gmail.com,企业用户需要@你的域名。password填密码,两次认证的需要分配一个Application-specific passwords。mailboxes里面不要照网络上的填写[Gmail]/All Mail,那是英文环境用的。

~/shell/gmail.mbox是目标文件,你需要先touch出来。~/.getmail/gmail.log是log,建议和配置文件同名。

执行

把下面的gmail替换为你的配置文件名,注意不需要写.getmail/的前缀。

getmail -r gmail

系统就会开始备份你的数据。像贝壳的gmail这种数据,量比较大,时间也会比较长。

问题

getmail是python写的,备份数据比较大的时候,内存消耗会很惊人。而且当处理巨量数目的文件时。在启动时会将目录全部下载到本地,然后计算一阵。这个耗时,网络消耗和CPU都比较大。要有点耐性。