rubypond-s3backup-manager 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/s3backup +76 -0
- data/bin/s3backup_monitor +0 -0
- data/bin/s3restore +85 -0
- metadata +5 -3
data/bin/s3backup
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'optparse'
|
3
|
+
require 'rubygems'
|
4
|
+
require 's3backup-manager'
|
5
|
+
|
6
|
+
options = {}
|
7
|
+
optparse = OptionParser.new do|opts|
|
8
|
+
opts.banner = "Usage: s3backup.rb [options] file1 file2 ..."
|
9
|
+
|
10
|
+
opts.on('-l', '--list', 'List all available buckets') do
|
11
|
+
options[:list] = true
|
12
|
+
end
|
13
|
+
|
14
|
+
opts.on('--create BUCKET', String, 'Create a new bucket') do |bucket_name|
|
15
|
+
S3BackupManager::Bucket.create!(bucket_name)
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
options[:type] = "file"
|
21
|
+
opts.on('--type TYPE', String, 'Type of backup. Valid options are "file" and "database". Defaults to "file"' ) do |t|
|
22
|
+
unless ["file","database"].include?(t)
|
23
|
+
puts 'Only "file" and "database" are valid values for --type'
|
24
|
+
exit(1)
|
25
|
+
end
|
26
|
+
options[:type] = t.downcase
|
27
|
+
end
|
28
|
+
|
29
|
+
options[:adapter] = "postgres"
|
30
|
+
opts.on('--adapter ADAPTER', 'Type of database to backup. To be used with "--type database"' ) do |a|
|
31
|
+
unless ["mysql","postgres"].include?(a)
|
32
|
+
puts 'Only "mysql" and "postgres" are valid values for --adapter'
|
33
|
+
exit(1)
|
34
|
+
end
|
35
|
+
options[:adapter] = a
|
36
|
+
end
|
37
|
+
|
38
|
+
opts.on('--username USER', 'User to connect to the database as' ) do |u|
|
39
|
+
options[:username] = u
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
options[:bucket] = nil
|
44
|
+
opts.on('--bucket BUCKET', 'AmazonS3 bucket you wish to store the backup in' ) do |b|
|
45
|
+
options[:bucket] = b
|
46
|
+
end
|
47
|
+
|
48
|
+
opts.on('-h', '--help', 'Display this screen') do
|
49
|
+
puts opts
|
50
|
+
exit
|
51
|
+
end
|
52
|
+
end
|
53
|
+
optparse.parse!
|
54
|
+
|
55
|
+
if options[:list] && !options[:type_provided]
|
56
|
+
S3BackupManager::Bucket.find_all.each do |bucket|
|
57
|
+
puts bucket
|
58
|
+
end
|
59
|
+
exit
|
60
|
+
end
|
61
|
+
|
62
|
+
def setup_backup_adapter(options)
|
63
|
+
if options[:bucket]
|
64
|
+
eval("S3BackupManager::#{options[:type].capitalize}Backup").new(options)
|
65
|
+
else
|
66
|
+
puts "You need to specify a valid bucket for retrieval"
|
67
|
+
exit(1)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
backup_adapter = setup_backup_adapter(options)
|
72
|
+
|
73
|
+
ARGV.each do |f|
|
74
|
+
puts "Backing up #{f}..."
|
75
|
+
backup_adapter.backup(f)
|
76
|
+
end
|
File without changes
|
data/bin/s3restore
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'optparse'
|
3
|
+
require 'rubygems'
|
4
|
+
require "#{File.dirname(__FILE__)}/../lib/s3backup-manager"
|
5
|
+
|
6
|
+
options = {}
|
7
|
+
optparse = OptionParser.new do|opts|
|
8
|
+
opts.banner = "Usage: s3restore.rb [options] backup_file destination"
|
9
|
+
|
10
|
+
options[:adapter] = "postgres"
|
11
|
+
opts.on('--adapter ADAPTER', 'Type of database to backup. To be used with "--type database"' ) do |a|
|
12
|
+
unless ["mysql","postgres"].include?(a)
|
13
|
+
puts 'Only "mysql" and "postgres" are valid values for --adapter'
|
14
|
+
exit(1)
|
15
|
+
end
|
16
|
+
options[:adapter] = a
|
17
|
+
end
|
18
|
+
|
19
|
+
opts.on('--bucket BUCKET', 'AmazonS3 bucket you wish to store the backup in' ) do |b|
|
20
|
+
options[:bucket] = b
|
21
|
+
end
|
22
|
+
|
23
|
+
opts.on('--timestamp TIMESTAMP', 'Timestamp of file/database you want to restore' ) do |t|
|
24
|
+
options[:timestamp] = t
|
25
|
+
end
|
26
|
+
|
27
|
+
options[:type] = "file"
|
28
|
+
opts.on('--type TYPE', String, 'Type of backup. Valid options are "file" and "database". Defaults to "file"' ) do |t|
|
29
|
+
unless ["file","database"].include?(t.downcase)
|
30
|
+
puts 'Only "file" and "database" are valid values for --type'
|
31
|
+
exit(1)
|
32
|
+
end
|
33
|
+
options[:type] = t.downcase
|
34
|
+
options[:type_provided] = true
|
35
|
+
end
|
36
|
+
|
37
|
+
opts.on('-h', '--help', 'Display this screen') do
|
38
|
+
puts opts
|
39
|
+
exit
|
40
|
+
end
|
41
|
+
|
42
|
+
opts.on('-l', '--list', 'List all available buckets, or backed up files/databases if provided with --type') do
|
43
|
+
options[:list] = true
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
optparse.parse!
|
48
|
+
|
49
|
+
if options[:list] && !options[:type_provided]
|
50
|
+
S3BackupManager::Bucket.find_all.each do |bucket|
|
51
|
+
puts bucket
|
52
|
+
end
|
53
|
+
exit
|
54
|
+
end
|
55
|
+
|
56
|
+
def setup_backup_adapter(options)
|
57
|
+
if options[:bucket]
|
58
|
+
eval("S3BackupManager::#{options[:type].capitalize}Backup").new(options)
|
59
|
+
else
|
60
|
+
puts "You need to specify a valid bucket for retrieval"
|
61
|
+
exit(1)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
backup_adapter = setup_backup_adapter(options)
|
66
|
+
|
67
|
+
if options[:list] && options[:bucket]
|
68
|
+
backup_adapter.files.each do |file|
|
69
|
+
puts "#{file.key.sub(%r{^filesystem/},"")} (%0.2f KB)" % (file.size.to_f/1024)
|
70
|
+
end
|
71
|
+
exit
|
72
|
+
end
|
73
|
+
|
74
|
+
source = ARGV[0]
|
75
|
+
destination = ARGV[1]
|
76
|
+
puts "Restoring #{source}..."
|
77
|
+
if options[:type] == "database"
|
78
|
+
backup_adapter.restore(source, options[:timestamp])
|
79
|
+
else
|
80
|
+
if ARGV.size != 2
|
81
|
+
puts "Please specify the source and destination files"
|
82
|
+
exit(1)
|
83
|
+
end
|
84
|
+
backup_adapter.restore(source, options[:timestamp], destination)
|
85
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubypond-s3backup-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Glenn Gillen
|
@@ -34,8 +34,10 @@ dependencies:
|
|
34
34
|
version:
|
35
35
|
description: A series of scripts and a rack application for backing up databases and filesystems into tarballs, encrypting, and then storing off-site on AmazonS3
|
36
36
|
email: glenn@rubypond.com
|
37
|
-
executables:
|
38
|
-
|
37
|
+
executables:
|
38
|
+
- s3backup
|
39
|
+
- s3backup_monitor
|
40
|
+
- s3restore
|
39
41
|
extensions: []
|
40
42
|
|
41
43
|
extra_rdoc_files: []
|