使用Amazon S3云存储自动备份服务器文件
Amazon S3是Amazon的付费云存储服务,提供高可靠性与高吞吐率的数据存储与外链,只需要根据使用量来付费,没有最低消费要求,具体价格可见此链接。
Amazon S3的客户端种类很多,我比较常用的是web端管理s3fm.com以及开源命令行工具s3cmd,后者功能较全,而且更适合服务器上的自动化管理。
服务器上选择备份的有网站文件、数据库、服务器配置文件以及各种维护脚本。每星期备份一次,并根据容量的使用情况选择合适的备份数目,自动删除早期备份文件。备份后进行日志输出,可通过浏览器查看日志。
设置备份步骤:
- 申请Amazon.com帐号,并开通S3服务,需要输入信用卡信息并扣费1美元用于验证。
- 在Account页面的Access Credentials中,可查看Access Key ID以及Secret Access Key,前者可公开,后者要严格保密。
- 进入AWS Management Console,创建Bucket, Bucket名称需要在S3服务所有Buckets中唯一,因此不能起简单或者通用的名字。创建Bucket时需选择数据中心所在区域,亚太有一个在新加坡,但没看出有速度优势。当不同的Bucket在不同的区域时,是分别计费的。创建后即可对Buckets中的文件及目录进行操作。
- 在服务器中下载S3cmd并进行安装,值得注意的是最新的release版本尚不支持Reduced Redundancy Storage,SVN版本支持。
- 安装完成后运行
s3cmd --configure进行配置。 创建相应的文件目录及脚本文件,脚本附在后面。在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/








嗯。在用了。