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