class ServerBackups::BackupBase

Constants

BACKUP_TYPES
TIMESTAMP_FORMAT

Attributes

backup_type[R]
config[R]
logger[R]
s3[R]
working_directory[R]

Public Class Methods

daily(config_file, working_directory) click to toggle source
# File lib/server_backups/backup_base.rb, line 28
def daily(config_file, working_directory)
    new(config_file, working_directory, :daily)
end
incremental(config_file, working_directory) click to toggle source
# File lib/server_backups/backup_base.rb, line 40
def incremental(config_file, working_directory)
    new(config_file, working_directory, :incremental)
end
monthly(config_file, working_directory) click to toggle source
# File lib/server_backups/backup_base.rb, line 36
def monthly(config_file, working_directory)
    new(config_file, working_directory, :monthly)
end
new(config_file, working_directory, backup_type) click to toggle source
# File lib/server_backups/backup_base.rb, line 13
def initialize(config_file, working_directory, backup_type)
    @working_directory = working_directory
    @config = Config.new(config_file)
    Time.zone = config.time_zone
    @logger = config.logger
    @backup_type = backup_type.to_sym
    logger.debug "Initialized #{backup_type} #{self.class.name.demodulize.titleize}, " \
                 "prefix: '#{s3_prefix}'"
end
weekly(config_file, working_directory) click to toggle source
# File lib/server_backups/backup_base.rb, line 32
def weekly(config_file, working_directory)
    new(config_file, working_directory, :weekly)
end

Public Instance Methods

backup_filename() click to toggle source
# File lib/server_backups/backup_base.rb, line 45
def backup_filename
    "#{self.class.name.demodulize.underscore}.#{backup_type}.#{timestamp}.tgz"
end
backup_path() click to toggle source
# File lib/server_backups/backup_base.rb, line 83
def backup_path
    File.join(working_directory, backup_filename)
end
backup_s3_key() click to toggle source
# File lib/server_backups/backup_base.rb, line 69
def backup_s3_key
    File.join(s3_prefix, File.basename(backup_filename))
end
do_backup() click to toggle source
# File lib/server_backups/backup_base.rb, line 87
def do_backup
    load_resources
    take_backup
    store_backup
    # verify_backup
    remove_old_backups
end
incremental?() click to toggle source
# File lib/server_backups/backup_base.rb, line 23
def incremental?
    backup_type == :incremental
end
load_resources() click to toggle source
# File lib/server_backups/backup_base.rb, line 99
def load_resources
    # @mysql = Mys3ql::Mysql.new self.config
    @s3 = S3.new config
end
remove_old_backups() click to toggle source
# File lib/server_backups/backup_base.rb, line 79
def remove_old_backups
    s3.delete_files_not_newer_than s3_prefix, config.get_retention_threshold(backup_type)
end
s3_prefix() click to toggle source
# File lib/server_backups/backup_base.rb, line 64
def s3_prefix
    File.join(config.prefix, self.class.name.demodulize.underscore,
              backup_type.to_s, '/')
end
store_backup() click to toggle source
# File lib/server_backups/backup_base.rb, line 73
def store_backup
    logger.info 'Upload file'
    @uploaded_file = s3.save backup_path, backup_s3_key
    logger.info 'Finished uploading file.'
end
take_backup() click to toggle source
# File lib/server_backups/backup_base.rb, line 53
def take_backup
    logger.info "Creating #{backup_type} #{title} #{create_archive_command}"

    system create_archive_command
    unless last_command_succeeded?
        raise BackupCreationError.new("Received #{$CHILD_STATUS} from tar command.",
                                      self.class, backup_type)
    end
    logger.debug "Backup exited with #{$CHILD_STATUS}"
end
timestamp() click to toggle source
# File lib/server_backups/backup_base.rb, line 95
def timestamp
    Time.zone.now.strftime(TIMESTAMP_FORMAT)
end
title() click to toggle source
# File lib/server_backups/backup_base.rb, line 49
def title
    self.class.name.demodulize.titleize
end

Private Instance Methods

last_command_succeeded?() click to toggle source
# File lib/server_backups/backup_base.rb, line 106
def last_command_succeeded?
    $CHILD_STATUS.exitstatus.zero?
end