`

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

 

分享到:
评论

相关推荐

    gitlab备份恢复手册

    - 设置`gitlab_rails['backup_keep_time'] = 259200`来决定备份文件的保留时间,此处设置为3天。 2. **更改所有者和权限** - 使用`chown -R git:git /opt/gitlab_backup/`将备份目录的所有权更改为Git用户。 - ...

    Gitlab备份恢复与迁移.doc

    gitlab_rails['backup_path'] = '/mnt/backups' 然后,使用以下命令重新加载配置文件: gitlab-ctl reconfigure 二、Gitlab 自动备份 Gitlab 自动备份是指使用 cron 任务来自动执行 Gitlab 备份命令,从而实现...

    postgresql-backup:自动化PostgreSQL备份和还原

    入门将gem添加到您的Rails项目中: gem 'postgresql-backup' 转到终端并使用捆绑程序更新您的宝石: bundle install现在,您的项目已经有两个新的rake任务: backup和restore 。配置如果打算使用本地文件系统存储...

    centos7.5安装gitlab和gitlab备份迁移恢复.docx

    3. 恢复 GitLab 服务器数据,使用以下命令: ``` gitlab-ctl stop unicorn gitlab-ctl stop sidekiq chmod 777 /var/opt/gitlab/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar gitlab-rake gitlab:...

    Redmine使用手册.doc

    Redmine是一个基于Web的项目管理工具,使用Ruby on Rails框架开发。为了正确安装和使用Redmine,需要满足一定的系统要求和配置步骤。 系统要求: * Ruby on Rails 2.0.2 * 数据库:MySQL 4或更高版本、PostgreSQL ...

    database:网站数据库的备份和版本控制

    1. **从备份恢复**:使用之前创建的完整或增量备份文件恢复整个数据库或部分数据。 2. **时间点恢复**:如果使用支持此功能的数据库管理系统,可以从特定时间点恢复,即使在备份之后发生了数据更改。 3. **从版本...

    redmine使用手册

    - **数据备份**:使用`mysqldump`命令备份数据库。 - **附件备份**:使用`rsync`命令同步`RAILS_ROOT/files`目录中的附件。 示例脚本: ```bash # Database backup /usr/bin/mysqldump -u <username> -p <password>...

    backup-wx-乡居网:条件筛选列表,tab菜单,谷歌统计.zip

    对于“backup-wx-master”这个子文件,很可能是该项目的主分支或备份。参与这样的项目,开发者不仅可以学习到实际的开发技巧,还能了解到如何将这些组件应用于实际项目中。此外,开源项目通常有活跃的社区支持,遇到...

    Gitlab私有化部署管理

    - **定时任务**: `30 3 * * * /mnt/gitlab/backups/git_backup.sh` (每天凌晨3:30执行一次) - **脚本权限**: 设置为755 **1.2 内网环境** - **地址**: `http://xx.xx.xx.xx` - **备份目录**: `/var/opt/gitlab/...

    bitnami linux redmine 安装

    综上所述,Bitnami Linux Redmine 安装涉及的主要知识点有 Redmine 的基本功能、Ruby on Rails 开发、数据库管理、Web 服务器配置以及自动化部署工具的使用。通过提供的 `bak.sh` 脚本,我们可以学习到如何维护和...

    BitNami的Redmine升级步骤

    - 单独启动MySQL服务,以便后续的数据备份操作。 ```bash ../installdir/mysql/scripts/ctl.sh start ``` 4. **备份数据库**: - 找到`installdir/apps/redmine/config/database.yml`文件,记录其中的`...

    myplaceonline_posixcubes

    posixcubes 使用posixcube.sh使用haproxy负载均衡器(前端),nginx + passenger Rails服务器(web),postgresql数据库(数据库)以及更多(elasticsearch,数据库备份,rsyslog服务器等)构建完整的Ruby on Rails...

Global site tag (gtag.js) - Google Analytics