рдХрднреА-рдХрднреА рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдкрдХреЛ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдЙрддреНрдкрд╛рджрди рдХрд╛ рдЖрдзрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдореИрдВрдиреЗ рдпрд╣ рдиреБрд╕реНрдЦрд╛ рдордгрд┐ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЙрддреНрдкрд╛рджрди рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЖрдзрд╛рд░ рдПрдХ рд╣реА рд╣реЛ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕реЗрдХреНрд▓)ред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдЕрдиреНрдп рдард┐рдХрд╛рдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП (рдФрд░ рд╕рд╛рде рд╣реА рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП) рдХреИрдкрд┐рд╕реНрдЯреНрд░рд╛рдиреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИред
рдиреБрд╕реНрдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ 7zip рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
sudo apt-get
рдЗрд╕ рдХреЛрдб рдХреЛ Capfile рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
...
mac_os = `uname -a`.include?("Darwin") run_local_sudo_psql = mac_os ? "psql -h localhost -U postgres" : "#{sudo} -u postgres psql" run_local_psql = mac_os ? "psql -h localhost" : "psql" database_yml_path = "config/database.yml" config = YAML::load(capture("cat #{current_path}/#{database_yml_path}")) adapter = config[rails_env]["adapter"] database = config[rails_env]["database"] db_username = config[rails_env]["username"] db_password = config[rails_env]["password"] config = YAML::load(File.open(database_yml_path)) local_rails_env = 'development' local_adapter = config[local_rails_env]["adapter"] local_database = config[local_rails_env]["database"] local_db_username = config[local_rails_env]["username"] local_db_password = config[local_rails_env]["password"] set :local_folder_path, "tmp/backup" # you can set where to store *.sql.7z files on dev machine set :timestamp, Time.now.to_i # timestamp in seconds set :db_file_name, "#{database}-#{timestamp}.sql" # etc. app_production-1332404980.sql set :db_archive_ext, "7z" namespace :db do task :backup do file_name = fetch(:db_file_name) archive_ext = fetch(:db_archive_ext) dump_file_path = "#{shared_path}/backup/#{file_name}" output_file = "#{dump_file_path}.#{archive_ext}" run "mkdir -p #{shared_path}/backup" if adapter == "postgresql" run %{export PGPASSWORD="#{db_password}" && pg_dump -U #{db_username} #{database} > #{dump_file_path}} run "cd #{shared_path} && 7z a #{output_file} #{dump_file_path} && rm #{dump_file_path}" else puts "Cannot backup, adapter #{adapter} is not implemented for backup yet" end system "mkdir -p #{local_folder_path}" download(output_file, "#{local_folder_path}/#{file_name}.#{archive_ext}") end task :import do file_name = "#{db_file_name}.#{db_archive_ext}" file_path = "#{local_folder_path}/#{file_name}" if local_adapter == "postgresql" system "cd #{local_folder_path} && 7z x #{file_name}" system %{echo "drop database #{local_database}" | #{run_local_sudo_psql}} system %{echo "create database #{local_database} owner #{local_db_username};" | #{run_local_sudo_psql}} puts "ENTER your development password: #{local_db_password}" system "#{run_local_psql} -U#{local_db_username} #{local_database} < #{local_folder_path}/#{db_file_name}" system "rm #{local_folder_path}/#{db_file_name}" else puts "Cannot import, adapter #{local_adapter} is not implemented for backup yet" end end task :pg_import do if adapter == local_adapter db.backup db.import else puts "Sorry, but development and production adapters must be equals" end end end
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
cap db: pg_import- рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝реЛрд▓реНрдбрд░ "# {рдкреНрд░реЛрдЬреЗрдХреНрдЯ_рдирд╛рдо} / рд╕рд╛рдЭрд╛ / рдмреИрдХрдЕрдк" рдмрдирд╛рддрд╛ рд╣реИ
- рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдХрд╛ рдЖрдзрд╛рд░ рдбрдВрдк рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ 7zip рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ
- ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рдг 'tmp / backup'
- рд╡рд┐рдХрд╛рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдирдЬрд╝рд┐рдк рдФрд░ рдЖрдпрд╛рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг : рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд░реЛрдХреЗрдВ