备份到阿里云的oss
#概述#
备份一直是个麻烦的问题。备份到本地担心系统坏了导致数据丢失,备份到远程机器成本又有点高。 我的方法是通过ruby下的一个backup gem,来实现定期将mysql数据库和web程序备份到本地的同时,上传到阿里云的oss上。
##安装##
###ruby安装###
通过rvm来安装ruby,首先安装rvm。参考http://rvm.io 网站
\curl -sSL https://get.rvm.io | bash -s stable
rvm安装后,用如下命令安装ruby
rvm install ruby
###安装backup gem###
gem install backup
###安装backup-aliyun插件###
这个插件主要是给backup gem提供可以备份到阿里云oss的功能。 默认的插件依赖carrierwave-aliyun gem,可以上传到杭州站点下的bucket。不支持上传到青岛站点。
我更新了部分代码,加入了aliyun_area选项。可以支持青岛站点。 安装默认版本
gem install backup-aliyun
安装我修改后的版本
git clone https://github.com/babodx/backup-aliyun.git
cd backup-aliyun
gem build backup-aliyun.gemspec
gem install backup-aliyun-0.1.1.gem
##配置##
通过backup对数据库和程序文件备份,需要生成配置文件和配置model
backup generate:config
backup generate:model --trigger my_backup \
--archives --storages='local' --compressor='gzip'
编辑Backup/models/my_backup.rb文件,来定义需要备份的内容。具体可以参考http://meskyanichi.github.io/backup/v4/getting-started/ 文档
我的文件内容如下
# encoding: utf-8
#引入aliyun备份插件
require 'backup-aliyun'
Backup::Model.new(:my_backup, 'Description for my_backup') do
#定义需要备份的目录
archive :my_archive do |archive|
# Run the `tar` command using `sudo`
# archive.use_sudo
archive.add "/data/htdocs/my_backup"
end
#定义需要备份的数据库
database MySQL do |db|
db.name = "db_name"
db.username = "db_user"
db.password = "db_passwd"
db.host = "127.0.0.1"
db.port = 3306
end
#定义备份到本地路径
store_with Local do |local|
local.path = '~/backups/'
local.keep = 5
end
#定义备份到aliyun oss
store_with "Aliyun" do |aliyun|
aliyun.access_key_id = 'access_key_id'
aliyun.access_key_secret = 'access_key_secret'
aliyun.bucket = 'bucket_name'
aliyun.path = 'bucket_path'
aliyun.keep = 10
aliyun.aliyun_internal = 'true'
aliyun.aliyun_area = 'cn-qingdao'
end
#定义开启压缩
compress_with Gzip
end
##执行备份##
backup perform -t my_backup