使用Amazon S3云存储自动备份服务器文件

Amazon S3是Amazon的付费云存储服务,提供高可靠性与高吞吐率的数据存储与外链,只需要根据使用量来付费,没有最低消费要求,具体价格可见此链接

Amazon S3的客户端种类很多,我比较常用的是web端管理s3fm.com以及开源命令行工具s3cmd,后者功能较全,而且更适合服务器上的自动化管理。

服务器上选择备份的有网站文件、数据库、服务器配置文件以及各种维护脚本。每星期备份一次,并根据容量的使用情况选择合适的备份数目,自动删除早期备份文件。备份后进行日志输出,可通过浏览器查看日志。

设置备份步骤:

  1. 申请Amazon.com帐号,并开通S3服务,需要输入信用卡信息并扣费1美元用于验证。
  2. 在Account页面的Access Credentials中,可查看Access Key ID以及Secret Access Key,前者可公开,后者要严格保密。
  3. 进入AWS Management Console,创建Bucket, Bucket名称需要在S3服务所有Buckets中唯一,因此不能起简单或者通用的名字。创建Bucket时需选择数据中心所在区域,亚太有一个在新加坡,但没看出有速度优势。当不同的Bucket在不同的区域时,是分别计费的。创建后即可对Buckets中的文件及目录进行操作。
  4. 在服务器中下载S3cmd并进行安装,值得注意的是最新的release版本尚不支持Reduced Redundancy Storage,SVN版本支持。
  5. 安装完成后运行s3cmd --configure进行配置。
  6. 创建相应的文件目录及脚本文件,脚本附在后面。
  7. 在crontab中设置脚本自动运行的时间,设置参数见脚本后面。

脚本文件process.sh:

#!/bin/sh

date >> /srv/http/nginx/mysite/log1.txt
echo “===========================”>>/srv/http/nginx/mysite/log1.txt
date >> /srv/http/nginx/mysite/error.txt
echo “===========================”>>/srv/http/nginx/mysite/error.txt
#在日志文件中做标识

tar czf /backup/content/$(date +%Y%m%d).tar.gz  /srv/http/nginx/
#压缩网站文件,以日期作为文件名

mysqldump -h 127.0.0.1 -u root -ppassword –all-databases| gzip > /backup/content/$(date +%Y%m%d).sql.gz
#导出所有数据库,并进行压缩,以日期作为文件名

tar czf /backup/content/$(date +%Y%m%d)_set.tar.gz /etc /root /backup/script
#压缩脚本及配置文件,以“日期_set”为文件名

rm -f /backup/content/$(date +%Y%m%d –date=’-350 day’).sql.gz
rm -f /backup/content/$(date +%Y%m%d –date=’-70 day’).tar.gz
rm -f /backup/content/$(date +%Y%m%d –date=’-350 day’)_set.tar.gz
#删除服务器上的过期备份文件,可根据需要及备份文件大小选择合适的备份数目,因为这里每周备份一次,因些过期天数为7的倍数

s3cmd –rr put /backup/content/$(date +%Y%m%d).sql.gz s3://buckets/folder/
s3cmd –rr put /backup/content/$(date +%Y%m%d).tar.gz s3://buckets/folder/
s3cmd –rr put /backup/content/$(date +%Y%m%d)_set.tar.gz s3://buckets/folder/
#上传备份文件至服务器,其中–rr参数指定上传后采用Reduced Redundancy Storage方式存储,注意S3服务器目录后的/是一定要的。

s3cmd del S3://buckets/folder/$(date +%Y%m%d –date=’-28 day’).tar.gz
s3cmd del S3://buckets/folder/$(date +%Y%m%d –date=’-140 day’).sql.gz
s3cmd del S3://buckets/folder/$(date +%Y%m%d –date=’-140 day’)_set.tar.gz
#删除S3服务器上的过期备份。

设置备份计划

在shell下输入

crontab -e

会打开一个文本文件,默认使用vi编辑器,如果很不习惯的话在以上命令之前运行

export EDITOR=vim

这样就可以使用vim来进行编辑。

然后在打开的文本文件中加入以下一行。

30 01 * * 4 /backup/script/process.sh>>/srv/http/nginx/mysite/log.txt 2>>/srv/http/nginx/mysite/error.txt

在本例中,设置每周四的1点30分(服务器上的时间)来运行备份脚本,并将运行输出及错误提示输出到日志,方便查阅。

小结

这样设置并实施备份计划以后,在服务器及S3服务器上都有了重要文件的备份,还可选择将备份文件下载到本地做一备份,可靠性有了更好的保障。

觉得文章不错?请通过RSS订阅本博客文章。

你可能还喜欢如下文章



除非注明,本博客文章均为原创,转载请以链接形式标明本文地址
本文标题:使用Amazon S3云存储自动备份服务器文件
本文地址:http://www.feng-jun.com/backup-server-with-amazon-s3/

One Comment

  1. LuDa 说到:
    Firefox 3.6.8Windows XP

    嗯。在用了。

Leave a Reply