class Palisade::Backup

Public Class Methods

backup() click to toggle source
# File lib/palisade/backup.rb, line 10
def self.backup
  Palisade::Backup.new.backup
end
new() click to toggle source
# File lib/palisade/backup.rb, line 7
def initialize
end

Public Instance Methods

backup() click to toggle source
# File lib/palisade/backup.rb, line 14
def backup
  do_the_backup
end

Private Instance Methods

config() click to toggle source
# File lib/palisade/backup.rb, line 92
def config
  @config ||= load_config['config']
end
config_file() click to toggle source

—————————————— Configuration / Options

# File lib/palisade/backup.rb, line 84
def config_file
  @config_file ||= "#{`echo $HOME`.strip}/.palisade/config.yml"
end
daystamp() click to toggle source
# File lib/palisade/backup.rb, line 108
def daystamp
  @daystamp ||= Time.now.strftime('%d')
end
db_dir(name) click to toggle source
# File lib/palisade/backup.rb, line 56
def db_dir(name)
  "#{project_dir(name)}/db"
end
dest_root() click to toggle source
# File lib/palisade/backup.rb, line 100
def dest_root
  @dest_root ||= config['root']
end
do_the_backup() click to toggle source
# File lib/palisade/backup.rb, line 20
def do_the_backup
  projects.each do |name, config|
    verify_project_dir(name)
    if config['db']
      verify_db_dir(name)
      rsync(config['db'], db_dir(name))
    end
    config['assets'].each do |asset_name, data|
      method = data['method']
      method = 'rsync' if method.nil? || method == ''
      case method
      when 'rsync'
        rsync(data['route'], project_dir(name))
      when 's3cmd'
        verify_s3_dir(name, asset_name)
        s3cmd(data['route'], s3_dir(name, asset_name), data['config'])
      end
    end
  end
end
load_config() click to toggle source
# File lib/palisade/backup.rb, line 88
def load_config
  @load_config ||= YAML.load_file(config_file)
end
project_dir(name) click to toggle source

—————————————— Directory Management

# File lib/palisade/backup.rb, line 52
def project_dir(name)
  "#{dest_root}/#{name}"
end
projects() click to toggle source
# File lib/palisade/backup.rb, line 96
def projects
  @projects ||= load_config['projects']
end
rsync(src, dest) click to toggle source
# File lib/palisade/backup.rb, line 41
def rsync(src, dest)
  system("rsync #{rsync_options} #{src} #{dest}")
end
rsync_options() click to toggle source
# File lib/palisade/backup.rb, line 104
def rsync_options
  @rsync_options ||= '-chavz --stats'
end
s3_dir(name, asset_name) click to toggle source
# File lib/palisade/backup.rb, line 60
def s3_dir(name, asset_name)
  "#{project_dir(name)}/#{asset_name}"
end
s3cmd(src, dest, config = nil) click to toggle source
# File lib/palisade/backup.rb, line 45
def s3cmd(src, dest, config = nil)
  config = "-c #{config}" unless config.nil?
  system("s3cmd get -vr --skip-existing #{config} s3://#{src}/ #{dest}")
end
verify_db_dir(name) click to toggle source
# File lib/palisade/backup.rb, line 70
def verify_db_dir(name)
  unless Dir.exists?(db_dir(name))
    FileUtils.mkdir_p(db_dir(name))
  end
end
verify_project_dir(name) click to toggle source
# File lib/palisade/backup.rb, line 64
def verify_project_dir(name)
  unless Dir.exists?(project_dir(name))
    FileUtils.mkdir_p(project_dir(name))
  end
end
verify_s3_dir(name, asset_name) click to toggle source
# File lib/palisade/backup.rb, line 76
def verify_s3_dir(name, asset_name)
  unless Dir.exists?(s3_dir(name, asset_name))
    FileUtils.mkdir_p(s3_dir(name, asset_name))
  end
end