Backup database from the application

Hi, I want to create an administration panel in the application that
would allow to backup the database and some other stuff. How can I
create a backup and send it to some place (s3, ftp) or download it as
a file to the local computer.

Daniel

I guess it will depend on your database. This is the code for a
backup action in my app. I wrote it some time ago when I had little
experience so it may well not be the best way.

  def backup
    # get database name from one of the models
    # there must be a better way of doing this
    dbname = Act.configurations[RAILS_ENV]['database']
    if dbname
      # delete backup files created on previous backup actions
      Dir.glob("#{dbname}_*.sql").each { |f| File.delete(f) }
      filename = "#{dbname}_" + Time.new.strftime('%Y%m%d_%H%M%S') + '.sql'
      @answer = system "mysqldump -u xxxxx -pxxxxx #{dbname} > #{filename}"
      if @answer
        send_file "#{filename}"
        # note cannot delete the file here as the file is sent in -background
      else
        # dump failed
        flash[:error] = "Mysql dump failed"
        redirect_to :action => :index
      end
    end
  end

Colin

The project is on heroku and PostgreSQL is used there. I also use
PostgreSQL on my local. I thing creating/editing/deleting files on
heroku is forbidden

Daniel Morigan wrote:

The project is on heroku and PostgreSQL is used there. I also use
PostgreSQL on my local. I thing creating/editing/deleting files on
heroku is forbidden

It is. But Heroku already provides Rake tasks to back up the DB.

Best,