在网上看到好多人用虚拟主机如DreamHost等空间来备份VPS或者独立服务器上面重要的数据, 如每日数据库的备份等等。 个人认为这个方法不是很经济, 可靠性也不是很高。
     一般虚拟空间总要4美元左右一个月, 而4美元一个月在Amazon S3 上可以备份10g左右的数据, 但是一般的服务器应该用不到这么大的备份, 而S3就是按需收费的,这样每个月的费用就大大降低了,正常一两元人民币就ok了。 而可靠性个人认为S3要稳定的多,毕竟很多大公司都把存储服务放在S3上, 肯定是有他的道理的, 而一般虚拟空间丢失数据的情况常有发生。
     如何自动备份数据到S3上面呢? 可以使用 s3sync 工具进行同步。具体步骤如下:
第一步:创建Amazon S3账号
      登入 http://www.amazon.com/s3 网站,创建好自己的账号, 接受信用卡支付。 创建好账号后得到你自己的Access Key ID 和Secret Access Key。 上传下载文件需要用到这两个key,相当于你账号的密码。
第二步:安装 s3sync
     s3sync需要ruby支持, Debian/Ubuntu系统可以通过  “$ sudo apt-get install ruby libopenssl-ruby” 安装, CentOS可以通过yum命令安装。
     下载 s3sync 并解压 

$ wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
$ tar xvzf s3sync.tar.gz
进入 s3sync目录下载安装ssl证书,以便加密传输数据。
$ mkdir certs
$ cd certs
$ wget http://mirbsd.mirsolutions.de/cvs.cgi/~checkout~/src/etc/ssl.certs.shar
$ sh ssl.certs.shar
$ cd..
第三步:创建备份数据脚本
建议先在本机上做备份, 比如保存最近10天的备份。
$ touch backup.sh
$ chmod +x backup.sh
内容如下:
#!/bin/sh
cd /var/backup/db

#导出数据库
mysqldump -h 127.0.0.1 -u root -ppassword dabaseName| gzip > $(date +%Y%m%d).sql.gz

#保留最近10天的备份
rm -f $(date +%Y%m%d --date='10 days ago').sql.gz

第四步:创建上传脚本

$ touch upload.sh
$ chmod +x upload.sh
内容如下:
cd /var/s3sync
export AWS_ACCESS_KEY_ID= 你的S3 的keyId
export AWS_SECRET_ACCESS_KEY=你的S3的Secret Access key
export SSL_CERT_DIR=/var/s3sync/certs
ruby s3sync.rb -r --ssl /var/backup/ yourBucket:AutoBackup

第五步: 在cron里定时运行
crontab 里面加入:

1 0 * * * /var/backup/backup.sh
1 1 * * * /var/s3sync/upload.sh

这样就不用担心服务器里面的数据了, 每天会定时备份,平时如何浏览下载删除Amazon S3 里面的备份文件呢,有很多客户端工具, Windows/Linux下面推荐使用 S3 Browser, Mac下面推荐使用 S3 hub

posted on 2010-04-25 23:02  来自天堂里的另一天!  阅读(2919)  评论(2编辑  收藏  举报