From d15d18bfcd51fcb9c5007c70b900c7eaf51a55e4 Mon Sep 17 00:00:00 2001 From: Eli Fatsi Date: Wed, 7 Sep 2016 12:26:16 -0600 Subject: [PATCH 1/2] Add task for pulling down remote db without loading locally --- lib/capistrano-db-tasks/database.rb | 12 ++++++++++++ lib/capistrano-db-tasks/dbtasks.rb | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/capistrano-db-tasks/database.rb b/lib/capistrano-db-tasks/database.rb index eba206f..e23b5cd 100644 --- a/lib/capistrano-db-tasks/database.rb +++ b/lib/capistrano-db-tasks/database.rb @@ -215,6 +215,18 @@ def local_to_remote(instance) remote_db.load(local_db.output_file, instance.fetch(:db_local_clean)) File.unlink(local_db.output_file) if instance.fetch(:db_local_clean) end + + def remote_backup(instance) + remote_db = Database::Remote.new(instance) + remote_db.dump.download + + file = remote_db.output_file + unzip_file = File.join(File.dirname(file), File.basename(file, '.bz2')) + backup_dir = instance.fetch(:db_backup_dir) + + instance.logger.info("Unzipping database backup and storing in #{backup_dir}") + system("bunzip2 -f #{file} && mkdir -p #{backup_dir} && mv #{unzip_file} #{backup_dir}") + end end end diff --git a/lib/capistrano-db-tasks/dbtasks.rb b/lib/capistrano-db-tasks/dbtasks.rb index 13e01e3..b8dac9e 100644 --- a/lib/capistrano-db-tasks/dbtasks.rb +++ b/lib/capistrano-db-tasks/dbtasks.rb @@ -13,6 +13,7 @@ set :skip_data_sync_confirm, (ENV['SKIP_DATA_SYNC_CONFIRM'].to_s.downcase == 'true') set :disallow_pushing, false unless fetch(:disallow_pushing) set :compressor, :gzip unless fetch(:compressor) +set :db_backup_dir, 'db/backups' unless fetch(:db_backup_dir) namespace :capistrano_db_tasks do task :check_can_push do @@ -30,6 +31,14 @@ end end end + + desc 'Create a database backup remote database data' + task :backup do + on roles(:db) do + Database.remote_backup(instance) + end + end + end end namespace :local do @@ -47,6 +56,9 @@ desc 'Synchronize your local database using remote database data' task :pull => "db:local:sync" + desc 'Create a database backup remote database data' + task :backup => "db:remote:backup" + desc 'Synchronize your remote database using local database data' task :push => "db:remote:sync" end From 8e50364ea70ac17a14098955a9a0767aeb5a9c00 Mon Sep 17 00:00:00 2001 From: Eli Fatsi Date: Wed, 7 Sep 2016 12:33:46 -0600 Subject: [PATCH 2/2] Readme and backup task description update --- README.markdown | 1 + lib/capistrano-db-tasks/dbtasks.rb | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.markdown b/README.markdown index 4e43b13..3967bd9 100644 --- a/README.markdown +++ b/README.markdown @@ -77,6 +77,7 @@ Available tasks db:local:sync || db:pull # Synchronize your local database using remote database data db:remote:sync || db:push # Synchronize your remote database using local database data + db:remote:backup || db:backup # Create a database backup using remote database data Example ======= diff --git a/lib/capistrano-db-tasks/dbtasks.rb b/lib/capistrano-db-tasks/dbtasks.rb index b8dac9e..a1aceb1 100644 --- a/lib/capistrano-db-tasks/dbtasks.rb +++ b/lib/capistrano-db-tasks/dbtasks.rb @@ -32,7 +32,7 @@ end end - desc 'Create a database backup remote database data' + desc 'Create a database backup using remote database data' task :backup do on roles(:db) do Database.remote_backup(instance) @@ -56,7 +56,7 @@ desc 'Synchronize your local database using remote database data' task :pull => "db:local:sync" - desc 'Create a database backup remote database data' + desc 'Create a database backup using remote database data' task :backup => "db:remote:backup" desc 'Synchronize your remote database using local database data'