备份 WordPress 博客到 Dropbox

有很多用户在我们的 VPS 上搭建了 WordPress 博客,出于成本的考虑,我们不对 VPS 做任何备份,数据中心里额外的最普通的 FTP 存储每 10GB 至少10美元每月,备份一个 256MB 10GB 的 VPS 就要10美元每月,这个价格可以再买一个 VPS 呢,我相信我们和我们的用户都无法承受这个价格。但是备份又是一件非常重要的事情,所以一个折衷的办法就是采用第三方某种形式的免费网络存储来做选择性的备份,比如用 Gmail 备份数据库文件、用 Dropbox 备份小博客或者购买其他服务商那种只要4美元的 OpenVZ VPS 来做备份等。

WordPress 有个 wp Time Machine 插件可以将 wp-content 下的所有内容和数据库整体打包,然后备份到 Dropbox, Amazon S3 或者 FTP 服务器上。本来想这个 wp Time Machine 插件肯定有很多人在用了,再写一篇博客有点浪费,让人惊讶的是 VPSee 在 Google 上搜索 ”wp Time Machine 插件“ 却没有发现一篇相关的中文介绍。使用和设置 wp Time Machine 非常容易,对于 vpsee.com 的读者群和玩 VPS 的用户来说完全不用详细介绍:D

在 WordPress->Settings->wp Time Machine 里设置 wp Time Machine:

backup wordpress blog to dropbox

上传到 Dropbox 后:

backup wordpress blog to dropbox

谢谢 “我就是 Dianso” 博主的提示,这个插件有安全问题,会在 wp-content 中保留备份的包,任何人都可以根据 wp-content/wpTimeMachine-archive.tar.gz 下载这个包并得到 wordpress 的数据库文件,所以上传到 DropBox 后不要忘了在 wp-content 里删除这个文件。

用 duplicity 加密备份 Xen 虚拟机

在我们的 VPS 计划中有备份的附加服务,我们的数据中心能提供多种专业存储备份服务,为了降低成本我们选择的是最简单的 FTP 服务器,大家都知道 FTP 不安全,密码都可以 sniffer 到,把文件直接放在上面毫无秘密可言,太危险,为了保护我们客户的数据和隐私我们决定使用加密工具把虚拟机加密后再备份到 FTP 上,这样就算别人进入到我们的 FTP 服务器也什么都 “看” 不见,也无法删除、修改文件,数据都是 GPG 加密的,还有这个 FTP 服务器只有我们数据中心的人才能访问,与外界隔绝。所以这样既满足了我们备份需求又帮我们大大的降低了成本,如果使用数据中心的专业存储的话成本会高得惊人,那我们就无法提供10美元以下的 VPS 了。

Duplicity 是一个是我们正在用的加密备份工具,采用 rsync 算法和类库实现增量备份,并用 gpg 对数据包加密和签名,支持本地、远程、ftp, ssh/scp, rsync, Amazon S3 等多种存储方式和介质。

首先安装 duplicity:

# yum install duplicity

生成一个 gpg key:

$ gpg --gen-key

$ gpg --list-keys

我们把所有的 Xen 虚拟机镜像都放在一个目录里,然后备份本机的 /home/vpsee/xen 目录到远程机器 172.16.39.2 的 /backup/xen 目录,这样的备份是经过加密的,在远程机器的 /backup/xen 下看不到任何东西:

$ duplicity --encrypt-key="D2CDC262" /home/vpsee/xen/ \ 
ftp://user:pass@172.16.39.2/backup/xen/

从远程机器 172.16.39.2 的 /backup/xen 目录恢复到本地的 /home/vpsee/restore/ 目录:

$ mkdir /home/vpsee/restore
$ duplicity --encrypt-key="D2CDC262" \
ftp://user:pass@172.16.39.2/backup/xen/ /home/vpsee/restore/

同样的道理,我们也可以用 scp 来替代 ftp 完成备份的传输,备份操作:

# duplicity --encrypt-key="D2CDC262" /home/vpsee/xen/  \
scp://user:pass@172.16.39.2/backup/xen/

恢复操作:

# mkdir /home/vpsee/restore
# duplicity --encrypt-key="D2CDC262" \
scp://user:pass@172.16.39.2/backup/xen  /home/vpsee/restore/
GnuPG passphrase:

删除远程机器上的备份:

# duplicity cleanup ftp://user:pass@172.16.39.2/backup/xen
GnuPG passphrase: