backup 3.8.0 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/backup/cloud_io/cloud_files.rb +5 -3
- data/lib/backup/cloud_io/s3.rb +4 -1
- data/lib/backup/config.rb +16 -0
- data/lib/backup/model.rb +17 -2
- data/lib/backup/storage/cloud_files.rb +7 -1
- data/lib/backup/storage/s3.rb +7 -1
- data/lib/backup/syncer/cloud/cloud_files.rb +7 -1
- data/lib/backup/syncer/cloud/s3.rb +7 -1
- data/lib/backup/version.rb +1 -1
- data/templates/cli/config +40 -7
- data/templates/cli/model.erb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 11a5142174a679705cd2443ac0248928a6c5f8b8
|
|
4
|
+
data.tar.gz: 7e6b4a5a23ab07ecd0e0cdaf96e537b721b6d3bc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 18b022a990ce3a8c6010a3d7ea25bce8eca33d1552b03f852e3c02a077ac73b6788ff0d841f5f097b56536282fe1f997dcfeebd4fa1954aa18fc8553ba8f513e
|
|
7
|
+
data.tar.gz: 710399d76701426778abf1a6713a59b9f01dd532ec00a1fb2d8d2035d421441ffd0a2288fab472a68af649817086461c05e34770db6c8e7bf6698e5a2851eeb9
|
|
@@ -13,7 +13,8 @@ module Backup
|
|
|
13
13
|
SEGMENT_BUFFER = 1024**2 # 1 MiB
|
|
14
14
|
|
|
15
15
|
attr_reader :username, :api_key, :auth_url, :region, :servicenet,
|
|
16
|
-
:container, :segments_container, :segment_size, :days_to_keep
|
|
16
|
+
:container, :segments_container, :segment_size, :days_to_keep,
|
|
17
|
+
:fog_options
|
|
17
18
|
|
|
18
19
|
def initialize(options = {})
|
|
19
20
|
super
|
|
@@ -27,6 +28,7 @@ module Backup
|
|
|
27
28
|
@segments_container = options[:segments_container]
|
|
28
29
|
@segment_size = options[:segment_size]
|
|
29
30
|
@days_to_keep = options[:days_to_keep]
|
|
31
|
+
@fog_options = options[:fog_options]
|
|
30
32
|
end
|
|
31
33
|
|
|
32
34
|
# The Syncer may call this method in multiple threads,
|
|
@@ -139,14 +141,14 @@ module Backup
|
|
|
139
141
|
private
|
|
140
142
|
|
|
141
143
|
def connection
|
|
142
|
-
@connection ||= Fog::Storage.new(
|
|
144
|
+
@connection ||= Fog::Storage.new({
|
|
143
145
|
:provider => 'Rackspace',
|
|
144
146
|
:rackspace_username => username,
|
|
145
147
|
:rackspace_api_key => api_key,
|
|
146
148
|
:rackspace_auth_url => auth_url,
|
|
147
149
|
:rackspace_region => region,
|
|
148
150
|
:rackspace_servicenet => servicenet
|
|
149
|
-
)
|
|
151
|
+
}.merge(fog_options || {}))
|
|
150
152
|
end
|
|
151
153
|
|
|
152
154
|
def create_containers
|
data/lib/backup/cloud_io/s3.rb
CHANGED
|
@@ -14,7 +14,8 @@ module Backup
|
|
|
14
14
|
MAX_MULTIPART_SIZE = 1024**4 * 5 # 5 TiB
|
|
15
15
|
|
|
16
16
|
attr_reader :access_key_id, :secret_access_key, :use_iam_profile,
|
|
17
|
-
:region, :bucket, :chunk_size, :encryption, :storage_class
|
|
17
|
+
:region, :bucket, :chunk_size, :encryption, :storage_class,
|
|
18
|
+
:fog_options
|
|
18
19
|
|
|
19
20
|
def initialize(options = {})
|
|
20
21
|
super
|
|
@@ -27,6 +28,7 @@ module Backup
|
|
|
27
28
|
@chunk_size = options[:chunk_size]
|
|
28
29
|
@encryption = options[:encryption]
|
|
29
30
|
@storage_class = options[:storage_class]
|
|
31
|
+
@fog_options = options[:fog_options]
|
|
30
32
|
end
|
|
31
33
|
|
|
32
34
|
# The Syncer may call this method in multiple threads.
|
|
@@ -130,6 +132,7 @@ module Backup
|
|
|
130
132
|
:aws_secret_access_key => secret_access_key
|
|
131
133
|
)
|
|
132
134
|
end
|
|
135
|
+
opts.merge!(fog_options || {})
|
|
133
136
|
conn = Fog::Storage.new(opts)
|
|
134
137
|
conn.sync_clock
|
|
135
138
|
conn
|
data/lib/backup/config.rb
CHANGED
|
@@ -38,6 +38,22 @@ module Backup
|
|
|
38
38
|
module_eval(File.read(@config_file), @config_file)
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
+
# Allows users to create preconfigured models.
|
|
42
|
+
def preconfigure(name, &block)
|
|
43
|
+
unless name.is_a?(String) && name =~ /^[A-Z]/
|
|
44
|
+
raise Error, "Preconfigured model names must be given as a string " +
|
|
45
|
+
" and start with a capital letter."
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
if Backup.const_defined?(name)
|
|
49
|
+
raise Error, "'#{ name }' is already in use " +
|
|
50
|
+
"and can not be used for a preconfigured model."
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
Backup.const_set(name, Class.new(Model))
|
|
54
|
+
Backup.const_get(name).preconfigure(&block)
|
|
55
|
+
end
|
|
56
|
+
|
|
41
57
|
def hostname
|
|
42
58
|
@hostname ||= run(utility(:hostname))
|
|
43
59
|
end
|
data/lib/backup/model.rb
CHANGED
|
@@ -25,6 +25,18 @@ module Backup
|
|
|
25
25
|
all.select {|model| trigger == model.trigger }
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
|
+
|
|
29
|
+
# Allows users to create preconfigured models.
|
|
30
|
+
def preconfigure(&block)
|
|
31
|
+
@preconfigure ||= block
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
# used for testing
|
|
37
|
+
def reset!
|
|
38
|
+
@all = @preconfigure = nil
|
|
39
|
+
end
|
|
28
40
|
end
|
|
29
41
|
|
|
30
42
|
##
|
|
@@ -111,6 +123,7 @@ module Backup
|
|
|
111
123
|
@notifiers = []
|
|
112
124
|
@syncers = []
|
|
113
125
|
|
|
126
|
+
instance_eval(&self.class.preconfigure) if self.class.preconfigure
|
|
114
127
|
instance_eval(&block) if block_given?
|
|
115
128
|
|
|
116
129
|
# trigger all defined databases to generate their #dump_filename
|
|
@@ -214,7 +227,8 @@ module Backup
|
|
|
214
227
|
#
|
|
215
228
|
# If any exception is raised, any defined +after+ hook will be skipped.
|
|
216
229
|
def before(&block)
|
|
217
|
-
@before
|
|
230
|
+
@before = block if block
|
|
231
|
+
@before
|
|
218
232
|
end
|
|
219
233
|
|
|
220
234
|
##
|
|
@@ -241,7 +255,8 @@ module Backup
|
|
|
241
255
|
# the exit_status will be elevated to 2. If the exception is not a
|
|
242
256
|
# StandardError, the exit_status will be elevated to 3.
|
|
243
257
|
def after(&block)
|
|
244
|
-
@after
|
|
258
|
+
@after = block if block
|
|
259
|
+
@after
|
|
245
260
|
end
|
|
246
261
|
|
|
247
262
|
##
|
|
@@ -65,6 +65,11 @@ module Backup
|
|
|
65
65
|
# Default: 30
|
|
66
66
|
attr_accessor :retry_waitsec
|
|
67
67
|
|
|
68
|
+
##
|
|
69
|
+
# Additional options to pass along to fog.
|
|
70
|
+
# e.g. Fog::Storage.new({ :provider => 'Rackspace' }.merge(fog_options))
|
|
71
|
+
attr_accessor :fog_options
|
|
72
|
+
|
|
68
73
|
def initialize(model, storage_id = nil)
|
|
69
74
|
super
|
|
70
75
|
|
|
@@ -93,7 +98,8 @@ module Backup
|
|
|
93
98
|
:segment_size => segment_size,
|
|
94
99
|
:days_to_keep => days_to_keep,
|
|
95
100
|
:max_retries => max_retries,
|
|
96
|
-
:retry_waitsec => retry_waitsec
|
|
101
|
+
:retry_waitsec => retry_waitsec,
|
|
102
|
+
:fog_options => fog_options
|
|
97
103
|
)
|
|
98
104
|
end
|
|
99
105
|
|
data/lib/backup/storage/s3.rb
CHANGED
|
@@ -62,6 +62,11 @@ module Backup
|
|
|
62
62
|
# Default: :standard
|
|
63
63
|
attr_accessor :storage_class
|
|
64
64
|
|
|
65
|
+
##
|
|
66
|
+
# Additional options to pass along to fog.
|
|
67
|
+
# e.g. Fog::Storage.new({ :provider => 'AWS' }.merge(fog_options))
|
|
68
|
+
attr_accessor :fog_options
|
|
69
|
+
|
|
65
70
|
def initialize(model, storage_id = nil)
|
|
66
71
|
super
|
|
67
72
|
|
|
@@ -88,7 +93,8 @@ module Backup
|
|
|
88
93
|
:storage_class => storage_class,
|
|
89
94
|
:max_retries => max_retries,
|
|
90
95
|
:retry_waitsec => retry_waitsec,
|
|
91
|
-
:chunk_size => chunk_size
|
|
96
|
+
:chunk_size => chunk_size,
|
|
97
|
+
:fog_options => fog_options
|
|
92
98
|
)
|
|
93
99
|
end
|
|
94
100
|
|
|
@@ -28,6 +28,11 @@ module Backup
|
|
|
28
28
|
# (LAN-based transfers to avoid charges and improve performance)
|
|
29
29
|
attr_accessor :servicenet
|
|
30
30
|
|
|
31
|
+
##
|
|
32
|
+
# Additional options to pass along to fog.
|
|
33
|
+
# e.g. Fog::Storage.new({ :provider => 'Rackspace' }.merge(fog_options))
|
|
34
|
+
attr_accessor :fog_options
|
|
35
|
+
|
|
31
36
|
def initialize(syncer_id = nil)
|
|
32
37
|
super
|
|
33
38
|
|
|
@@ -50,7 +55,8 @@ module Backup
|
|
|
50
55
|
:retry_waitsec => retry_waitsec,
|
|
51
56
|
# Syncer can not use SLOs.
|
|
52
57
|
:segments_container => nil,
|
|
53
|
-
:segment_size => 0
|
|
58
|
+
:segment_size => 0,
|
|
59
|
+
:fog_options => fog_options
|
|
54
60
|
)
|
|
55
61
|
end
|
|
56
62
|
|
|
@@ -40,6 +40,11 @@ module Backup
|
|
|
40
40
|
# Default: :standard
|
|
41
41
|
attr_accessor :storage_class
|
|
42
42
|
|
|
43
|
+
##
|
|
44
|
+
# Additional options to pass along to fog.
|
|
45
|
+
# e.g. Fog::Storage.new({ :provider => 'AWS' }.merge(fog_options))
|
|
46
|
+
attr_accessor :fog_options
|
|
47
|
+
|
|
43
48
|
def initialize(syncer_id = nil)
|
|
44
49
|
super
|
|
45
50
|
|
|
@@ -62,7 +67,8 @@ module Backup
|
|
|
62
67
|
:max_retries => max_retries,
|
|
63
68
|
:retry_waitsec => retry_waitsec,
|
|
64
69
|
# Syncer can not use multipart upload.
|
|
65
|
-
:chunk_size => 0
|
|
70
|
+
:chunk_size => 0,
|
|
71
|
+
:fog_options => fog_options
|
|
66
72
|
)
|
|
67
73
|
end
|
|
68
74
|
|
data/lib/backup/version.rb
CHANGED
data/templates/cli/config
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
# If you need to use a utility other than the one Backup detects,
|
|
17
17
|
# or a utility can not be found in your $PATH.
|
|
18
18
|
#
|
|
19
|
-
#
|
|
19
|
+
# Utilities.configure do
|
|
20
20
|
# tar '/usr/bin/gnutar'
|
|
21
21
|
# redis_cli '/opt/redis/redis-cli'
|
|
22
22
|
# end
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
# Logging options may be set on the command line, but certain settings
|
|
28
28
|
# may only be configured here.
|
|
29
29
|
#
|
|
30
|
-
#
|
|
30
|
+
# Logger.configure do
|
|
31
31
|
# console.quiet = true # Same as command line: --quiet
|
|
32
32
|
# logfile.max_bytes = 2_000_000 # Default: 500_000
|
|
33
33
|
# syslog.enabled = true # Same as command line: --syslog
|
|
@@ -45,15 +45,48 @@
|
|
|
45
45
|
# Set default options to be applied to components in all models.
|
|
46
46
|
# Options set within a model will override those set here.
|
|
47
47
|
#
|
|
48
|
-
#
|
|
48
|
+
# Storage::S3.defaults do |s3|
|
|
49
49
|
# s3.access_key_id = "my_access_key_id"
|
|
50
50
|
# s3.secret_access_key = "my_secret_access_key"
|
|
51
51
|
# end
|
|
52
52
|
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
53
|
+
# Notifier::Mail.defaults do |mail|
|
|
54
|
+
# mail.from = 'sender@email.com'
|
|
55
|
+
# mail.to = 'receiver@email.com'
|
|
56
|
+
# mail.address = 'smtp.gmail.com'
|
|
57
|
+
# mail.port = 587
|
|
58
|
+
# mail.domain = 'your.host.name'
|
|
59
|
+
# mail.user_name = 'sender@email.com'
|
|
60
|
+
# mail.password = 'my_password'
|
|
61
|
+
# mail.authentication = 'plain'
|
|
62
|
+
# mail.encryption = :starttls
|
|
63
|
+
# end
|
|
64
|
+
|
|
65
|
+
##
|
|
66
|
+
# Preconfigured Models
|
|
67
|
+
#
|
|
68
|
+
# Create custom models with preconfigured components.
|
|
69
|
+
# Components added within the model definition will
|
|
70
|
+
# +add to+ the preconfigured components.
|
|
71
|
+
#
|
|
72
|
+
# preconfigure 'MyModel' do
|
|
73
|
+
# archive :user_pictures do |archive|
|
|
74
|
+
# archive.add '~/pictures'
|
|
75
|
+
# end
|
|
76
|
+
#
|
|
77
|
+
# notify_by Mail do |mail|
|
|
78
|
+
# mail.to = 'admin@email.com'
|
|
79
|
+
# end
|
|
80
|
+
# end
|
|
81
|
+
#
|
|
82
|
+
# MyModel.new(:john_smith, 'John Smith Backup') do
|
|
83
|
+
# archive :user_music do |archive|
|
|
84
|
+
# archive.add '~/music'
|
|
85
|
+
# end
|
|
86
|
+
#
|
|
87
|
+
# notify_by Mail do |mail|
|
|
88
|
+
# mail.to = 'john.smith@email.com'
|
|
89
|
+
# end
|
|
57
90
|
# end
|
|
58
91
|
|
|
59
92
|
|
data/templates/cli/model.erb
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
#
|
|
7
7
|
# $ backup perform -t <%= @options[:trigger] %> [-c <path_to_configuration_file>]
|
|
8
8
|
#
|
|
9
|
-
|
|
9
|
+
Model.new(:<%= @options[:trigger] %>, 'Description for <%= @options[:trigger] %>') do
|
|
10
10
|
<% if @options[:splitter] %>
|
|
11
11
|
<%= Backup::Template.new.result("cli/splitter") %>
|
|
12
12
|
<% end; if @options[:archives] %>
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: backup
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael van Rooijen
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-
|
|
11
|
+
date: 2013-11-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: builder
|