Class: P2bBackup::Backup

Inherits:
Object
  • Object
show all
Defined in:
lib/p2b-backup/backup.rb

Direct Known Subclasses

MysqlBackup, PostgresqlBackup

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Backup

Returns a new instance of Backup.



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/p2b-backup/backup.rb', line 12

def initialize(opts = {})
  @dbuser = opts[:dbuser]
  @dbpass = opts[:dbpass]
  @databases = opts[:databases]
  @keep = opts[:keep]
  @tmpname = "#{Time.now.strftime('%Y-%m-%dT%H:%M:%S').gsub(/:/, '-')}.sql.gz"

  @provider = case opts[:provider]
              when 's3' then P2bBackup::Providers::S3.new(opts[:provider_opts])
              when 'sftp' then P2bBackup::Providers::Sftp.new(opts[:provider_opts])
              else raise "Unknown provider #{opts[:provider]}"
              end
end

Instance Method Details

#backup_database(database) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/p2b-backup/backup.rb', line 26

def backup_database(database)
  if system(backup_command(database))
    @provider.upload("#{Dir.tmpdir}/#{database}.#{@tmpname}", filename: @tmpname)
    FileUtils.rm "#{Dir.tmpdir}/#{database}.#{@tmpname}"
    puts "successful backup: #{Dir.tmpdir}/#{database}.#{@tmpname}"
  else
    raise "Unable to dump database '#{database}' wtf?"
  end
end

#new_backupObject



36
37
38
39
40
# File 'lib/p2b-backup/backup.rb', line 36

def new_backup
  @databases.each do |db|
    backup_database(db)
  end
end

#normalize_name(obj) ⇒ Object



42
43
44
# File 'lib/p2b-backup/backup.rb', line 42

def normalize_name(obj)
  obj.key.gsub(%r{^.*?/}, '')
end