33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/ey_backup/cli.rb', line 33
def opt_parse(argv)
options = {}
opts = OptionParser.new do |opts|
opts.version = EY::CloudServer::VERSION
opts.banner = "\nUsage: eybackup [-flag] [argument]"
opts.define_head " eybackup: manage dump (mysqldump/pg_dump) style backups of your database."
opts.separator '*'*80
opts.on("-l", "--list-backup DATABASE", "List backups for DATABASE") do |db|
if db == "all"
db = nil
end
options[:db] = db
options[:command] = :list
end
opts.on("-e", "--engine DATABASE_ENGINE", "The database engine. ex: mysql, postgresql.") do |engine|
options[:engine] = engine
end
opts.on("-n", "--new-backup", "Create a new backup (default)") do
options[:command] = :new_backup
end
opts.on("-c", "--config CONFIG", "Use config file.") do |config|
options[:config] = config
end
opts.on("-b", "--bucket BUCKET", "Override default S3 bucket name. (Be Careful!)") do |bucket|
options[:backup_bucket] = bucket
end
opts.on("-t", "--tmp_dir TMPDIR", "Use the given directory for temporary storage.") do |tmp_dir|
options[:tmp_dir] = tmp_dir
end
opts.on("-k", "--key KEYID", "Public key ID to use for the backup operation") do |key_id|
options[:key_id] = key_id
end
opts.on("-q", "--quiet", "Suppress output to STDOUT") do
options[:quiet] = true
end
opts.on("-s", "--split_size INTEGER", "Maximum size of a single backup file before splitting.") do |split_size|
options[:split_size] = split_size.to_i
end
opts.on("-v", "--verbose", "Show verbose output") do
options[:verbose] = true
end
opts.on("-d", "--download BACKUP_INDEX",
"Download the backup specified by index.",
' Run `eybackup -l #{db_name}` to get the index.',
' BACKUP_INDEX uses the format #{index_number}:#{db_name}') do |index_and_db|
options[:command] = :download
db, index = split_index(index_and_db)
options[:index] = index
options[:db] = db
end
opts.on("-r", "--restore BACKUP_INDEX", "Download and apply the backup specified by index.",
" **WARNING!** will overwrite the current db with the backup.",
' Run `eybackup -l #{db_name}` to get the index.',
' BACKUP_INDEX uses the format #{index_number}:#{db_name}') do |index_and_db|
options[:command] = :restore
db, index = split_index(index_and_db)
options[:index] = index
options[:db] = db
end
options[:force] = false
opts.on("-f", "--force", "Force backup restore, bypass confirmation prompts.",
" For use with automated restore operations (e.g. Staging).") do
options[:force] = true
end
end
opts.parse!(argv)
options
end
|