`

Rails3使用backup备份数据

阅读更多
这篇比我写的好,而且更详细 http://blog.eddie.com.tw/2011/05/24/backup-your-website/

 

backup 是一个非常强大的备份工具,用来备份数据库和文件十分方便,先来看一下支持情况:

 

支持备份: 数据库、单个文件、整个目录

操作系统: UNIX-like ( 目前还不支持windows)

数据库: MySQL, PostgreSQL, MongoDB 、 Redis

文件存储服务: Amazon S3、Rackspace Cloud Files、Dropbox

其他备份方式: FTP、SFTP、SCP 、 RSync

备份成功与否通知: Email,、Twitter、Campfire

 

由于条件所限,我只演示一下FTP方式备份,配置起来还是挺简单的:

#首先,安装backup:

$ gem install backup

#在项目目录下执行:

$ backup generate --databases='mysql' --archives --storages='ftp' --compressors='gzip' --path='config'

 

把config目录下生成的config.rb重命名为backup.rb,我的配置如下:

database_yml = File.expand_path("../config/database.yml",  __FILE__)
RAILS_ENV    = ENV['RAILS_ENV'] || 'development'
    
require 'yaml'
config = YAML.load_file(database_yml)
    
Backup::Model.new(:my_backup, 'my backup') do
    
  archive :my_archive do |archive|
    archive.add File.expand_path("./public/system/")
  end
    
  database MySQL do |db|
    db.name               = config[RAILS_ENV]["database"]
    db.username           = config[RAILS_ENV]["username"]
    db.password           = config[RAILS_ENV]["password"]
    db.host               = config[RAILS_ENV]["host"]
    db.port               = config[RAILS_ENV]["port"]
    db.socket             = config[RAILS_ENV]["socket"]
    db.skip_tables        = ['sessions']
    db.additional_options = ['--quick', '--single-transaction']
  end
    
  store_with FTP do |server|
    server.username = 'test'
    server.password = 'test'
    server.ip       = '192.168.1.101'
    server.port     = 21
    server.path     = '~/backups/'
    server.keep     = 5
  end
    
  compress_with Gzip do |compression|
    compression.best = true
    compression.fast = false
  end
    
end

 说明:
  1、public/system/下是由paperclip上传的图片
  2、FTP的配置信息最好也像数据库的配置那样,配置在另外一个yml文件中,并且这个文件不要放入版本控制系统中,我这只是一个测试所以无所谓

 

在lib/tasks目录下新建bakcup.rake如下:

namespace :db do
  desc "My Backup"
  task :backup do
    sh "backup perform --trigger my_backup --config_file 'config/backup.rb'"
  end
end

 

 在项目根目录下执行这条命令进行备份:

$ rake db:backup

 

配合whenever 自动备份效果更佳!

 

        需要注意一下这个gem实际上并不是针对rails来开发的,它提供了一种命令行的方式来备份系统上的数据库和文件,所以你可以用它备份任何你想要备份的东西。

 

主要参考:

https://github.com/meskyanichi/backup/wiki

http://erik.debill.org/2011/03/26/csing-backup-with-rails

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics