diff options
| author | Rosemary Sanchez <rsanchez@madebyuppercut.com> | 2013-08-09 14:02:28 -0700 |
|---|---|---|
| committer | Rosemary Sanchez <rsanchez@madebyuppercut.com> | 2013-08-09 14:02:28 -0700 |
| commit | f720f3a81cf7a7077bcf320c9a0db0ca4fb1df3a (patch) | |
| tree | b3bd7e60168e7619129281472d12c7c5f916bb18 /config/recipes/postgresql.rb | |
| parent | c69a7be929e50678c92bd7a7114788de13ee3d74 (diff) | |
| parent | 8eee6727265617955a1839ef2f8c69d9fe75db36 (diff) | |
Add tasks to backup remote databases and restore them locally.
Diffstat (limited to 'config/recipes/postgresql.rb')
| -rw-r--r-- | config/recipes/postgresql.rb | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/config/recipes/postgresql.rb b/config/recipes/postgresql.rb index 63fa23b..8788c4b 100644 --- a/config/recipes/postgresql.rb +++ b/config/recipes/postgresql.rb @@ -32,4 +32,15 @@ namespace :postgresql do run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" end after "deploy:finalize_update", "postgresql:symlink" + + desc "Backup the database and copy it locally" + task :backup, roles: :db, only: {primary: true} do + filename = "#{rails_env}-#{Time.now.strftime('%Y-%m-%d-%H-%M')}.dump" + backup_path = "#{shared_path}/backups" + run "mkdir -p #{shared_path}/backups" + + run "PGPASSWORD='#{postgresql_password}' pg_dump -Fc --no-acl --no-owner -h #{postgresql_host} -U #{postgresql_user} #{postgresql_database} > #{backup_path}/#{filename}" + download("#{backup_path}/#{filename}", "tmp/#{filename}", :via => :scp) + run_locally "cd tmp; rm database.dump; ln -s #{filename} database.dump" + end end |
