加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何自动将Heroku pgbackup发送到S3

发布时间:2020-12-17 02:41:34 所属栏目:百科 来源:网络整理
导读:我们使用Heroku的PG备份,这是很棒的 http://addons.heroku.com/pgbackups 我目前每天手动将备份下载到我的计算机上,然后将其上传到我的S3帐户.有谁知道如何设置一个cron作业来自动创建备份(每天很好)并将其直接发送到我的S3帐户? 解决方法 如果你将它添加到
我们使用Heroku的PG备份,这是很棒的 http://addons.heroku.com/pgbackups

我目前每天手动将备份下载到我的计算机上,然后将其上传到我的S3帐户.有谁知道如何设置一个cron作业来自动创建备份(每天很好)并将其直接发送到我的S3帐户?

解决方法

如果你将它添加到lib / tasks并让运行herkou的cron插件运行:

namespace :heroku do
  desc "PostgreSQL database backups from Heroku to Amazon S3"
  task :backup => :environment do
    begin
      require 'right_aws'
      puts "[#{Time.now}] heroku:backup started"
      name = "#{ENV['APP_NAME']}-#{Time.now.strftime('%Y-%m-%d-%H%M%S')}.dump"
      db = ENV['DATABASE_URL'].match(/postgres://([^:]+):([^@]+)@([^/]+)/(.+)/)
      system "PGPASSWORD=#{db[2]} pg_dump -Fc -i --username=#{db[1]} --host=#{db[3]} #{db[4]} > tmp/#{name}"
      s3 = RightAws::S3.new(ENV['s3_access_key_id'],ENV['s3_secret_access_key'])
      bucket = s3.bucket("#{ENV['APP_NAME']}-heroku-backups",true,'private')
      bucket.put(name,open("tmp/#{name}"))
      system "rm tmp/#{name}"
      puts "[#{Time.now}] heroku:backup complete"
    # rescue Exception => e
    #   require 'toadhopper'
    #   Toadhopper(ENV['hoptoad_key']).post!(e)
    end
  end
end

task :cron => :environment do
  Rake::Task['heroku:backup'].invoke

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读