class Postmodern::Backup::Backup
Public Instance Methods
parser()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 14 def parser @parser ||= OptionParser.new do |opts| opts.banner = 'Usage: postmodern backup <options>' opts.separator '' opts.separator 'Creates a gzipped archive of a pg_basebackup, with file name:' opts.separator ' NAME.basebackup.CURRENTDATE.tar.gz' opts.separator '' opts.on('-U', '--user USER', 'Postgres user (default: "postgres")') do |o| self.options[:user] = o end opts.on('-d', '--directory DIRECTORY', 'Local directory to put backups (required)') do |o| self.options[:directory] = o end opts.on('-H', '--host HOST', 'Host of database (eg: fqdn, IP) (required)') do |o| self.options[:host] = o end opts.on('-p', '--port PORT', 'Port of database (default: 5432)') do |o| self.options[:port] = o end opts.on('-n', '--name NAME', 'Name of backup (required)') do |o| self.options[:name] = o end opts.on('--pigz CONCURRENCY', 'Use pigz with concurrency CONCURRENCY') do |o| self.options[:pigz] = true self.options[:concurrency] = o end opts.on_tail("-h", "--help", "Show this message") do puts opts exit end opts.on_tail("--version", "Show version") do require 'postmodern/version' puts Postmodern::VERSION exit end end end
run()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 61 def run setup_environment run_basebackup end
Private Instance Methods
archive_command()
click to toggle source
backup methods
# File lib/postmodern/backup/backup.rb, line 92 def archive_command return 'gzip -9' unless options[:pigz] "pigz -9 -p #{options[:concurrency]}" end
archive_file()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 97 def archive_file "#{directory}/#{name}.basebackup.#{current_date}.tar.gz" end
basebackup_command()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 101 def basebackup_command "pg_basebackup --checkpoint=fast -F tar -D - -U #{user} -h #{host} -p #{port} | #{archive_command} > #{archive_file}" end
current_date()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 105 def current_date Time.now.strftime('%Y%m%d') end
directory()
click to toggle source
option wrappers
# File lib/postmodern/backup/backup.rb, line 70 def directory @options[:directory] end
host()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 74 def host @options[:host] end
name()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 78 def name @options[:name] end
port()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 82 def port @options[:port] end
run_basebackup()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 109 def run_basebackup $stderr.puts "[#{Time.now.utc}] Creating basebackup: #{host}" stdout, stderr, status = Open3.capture3(script_env, basebackup_command) $stdout.print stdout $stderr.print stderr $stderr.puts "[#{Time.now.utc}] Finished basebackup: #{host}" exit status.exitstatus end
script_env()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 122 def script_env { 'PATH' => ENV['PATH'] } end
setup_environment()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 118 def setup_environment FileUtils.mkdir_p(directory) end
user()
click to toggle source
# File lib/postmodern/backup/backup.rb, line 86 def user @options[:user] end