backup という gem を使いファイルやデータベースのバックアップをとる手順を紹介したいと思います。
https://github.com/meskyanichi/backup
https://github.com/meskyanichi/backup/wiki
インストールする
$ gem install backup $ rbenv rehash $ mkdir ~/demo; cd demo # 作業用ディレクトリを作成しておく
ファイルのバックアップ
「ローカルストレージにファイルを保存してメールを送信する」という設定で設定ファイルを生成する
$ backup generate:model --trigger file_backup --archives --storages='local' --notifiers='mail' --config-path='~/demo/backup'
~/demo/backup/models/file_backup.rb と ~/demo/backup/config.rb というファイルが生成される。
テスト用のファイルを作成する
~/demo/test1.txt
~/demo/test2/test2.txt
~/demo/test2/test3/test3.txt
$ echo test1 > ~/demo/test1.txt $ mkdir -p test2/test3 $ echo test2 > ~/demo/test2/test2.txt $ echo test3 > ~/demo/test2/test3/test3.txt
バックアップの詳細な設定をする
# ~/demo/backup/models/file_backup.rb Model.new(:file_backup, 'Description for file_backup') do split_into_chunks_of 250 archive :my_archive do |archive| archive.root "~/demo" # ルートディレクトリを指定することができる # バックアップするファイルを指定する archive.add "test1.txt" # ファイル archive.add "test2/" # ディレクトリ # バックアップから除外するファイルを指定する archive.exclude "test2/test2.txt" end store_with Local do |local| local.path = "~/demo/backups/" # バックアップファイルが作成される場所を指定する local.keep = 5 end # 今回はGmailでメール送信のテストをする notify_by Mail do |mail| mail.on_success = true mail.on_warning = true mail.on_failure = true mail.from = "sender@example.com" mail.to = "receiver@example.com" mail.address = "smtp.gmail.com" mail.port = 587 mail.domain = "example.com" mail.user_name = "Gmailのユーザ名" mail.password = "Gmailのパスワード" mail.authentication = "plain" mail.encryption = :starttls end end
バックアップ処理を実行する
$ backup perform --trigger file_backup --root-path ~/demo/backup
処理が正常に終了すると
~/demo/backups/ 配下にバックアップファイルが作成され、ログファイルが添付されたメールが送信される。
展開すると以下ファイルがバックアップされている。
my_archive/test1.txt
my_archive/test2/test3/test3.txt
MySQL のバックアップ
「DropboxにMySQLのダンプファイルを保存する」という設定で設定ファイルを生成する
$ backup generate:model --trigger mysql_backup --databases='mysql' --storages='dropbox' --config-path='~/demo/backup'
~/demo/backup/models/mysql_backup.rb というファイルが生成される。
Dropbox Datastore APIへの登録を行なう
登録方法は以下記事を参考にしてください。
Dropbox Datastore APIへアプリを登録する手順
登録後 App key と App secret をメモしておく。
バックアップの詳細な設定をする
# ~/demo/backup/models/mysql_backup.rb Model.new(:mysql_backup, 'Description for mysql_backup') do split_into_chunks_of 250 database MySQL do |db| db.name = "demo" db.username = "root" db.password = "" db.host = "localhost" db.port = 3306 db.socket = "/tmp/mysql.sock" end ## メモしておいたApp key, App secret をそれぞれ設定する store_with Dropbox do |db| db.api_key = "App key" db.api_secret = "App secret" db.access_type = :app_folder db.path = "backups" db.keep = 25 end end
バックアップ処理を実行する
$ backup perform --trigger mysql_backup --root-path ~/demo/backup
途中で以下のようなメッセージが表示されるのでブラウザでURLにアクセスして表示された画面で許可ボタンをクリックする。 これでDropboxと連携できたのでEnter/Returnを押す。
Visit the following URL to authorize your Dropbox App with Backup: https://www.dropbox.com/1/oauth/authorize?oauth_token=xxxxxxxxxxxxxxxxxxx Hit "Enter/Return" once you're authorized.
処理が正常に終了すると
~/Dropbox/アプリ/アプリ名/backups/ 配下にバックアップファイルが作成される。
展開すると以下ファイルがバックアップされている。
databases/MySQL.sql