backup 3.0.26 → 3.0.27

Sign up to get free protection for your applications and to get access to all the features.
@@ -84,7 +84,7 @@ module Backup
84
84
 
85
85
  case concurrency_type
86
86
  when FalseClass
87
- all_file_names.each &block
87
+ all_file_names.each(&block)
88
88
  when :threads
89
89
  Parallel.each all_file_names,
90
90
  :in_threads => concurrency_level, &block
@@ -128,7 +128,7 @@ module Backup
128
128
  # Returns a String of file paths and their md5 hashes.
129
129
  def local_hashes
130
130
  Logger.message("\s\sGenerating checksums for '#{ @directory }'")
131
- `find #{ @directory } -print0 | xargs -0 openssl md5 2> /dev/null`
131
+ `find '#{ @directory }' -print0 | xargs -0 openssl md5 2> /dev/null`
132
132
  end
133
133
 
134
134
  ##
@@ -13,7 +13,7 @@ module Backup
13
13
  # Defines the minor version
14
14
  # PATCH:
15
15
  # Defines the patch version
16
- MAJOR, MINOR, PATCH = 3, 0, 26
16
+ MAJOR, MINOR, PATCH = 3, 0, 27
17
17
 
18
18
  ##
19
19
  # Returns the major version ( big release based off of multiple minor releases )
@@ -1,16 +1,13 @@
1
-
2
- ##
3
- # Archive Job
4
- archive_job = lambda do |archive|
5
- archive.add File.expand_path('../../../lib/backup', __FILE__)
6
- archive.exclude File.expand_path('../../../lib/backup/storage', __FILE__)
7
- end
8
-
9
1
  ##
10
- # Configuration
2
+ # Configuration Defaults
3
+ #
4
+ # Note that once config.rb has been loaded once and class defaults are set,
5
+ # there's nothing clearing these between each test. Keep this in mind, as this
6
+ # file will be loaded for every call to h_set_trigger() or h_set_single_model().
7
+ # While not a problem, this wouldn't happen for a normal `backup perform ...`.
11
8
 
12
9
  Backup::Storage::Local.defaults do |storage|
13
- storage.path = Backup::SpecLive::TMP_PATH
10
+ storage.path = SpecLive::TMP_PATH
14
11
  storage.keep = 2
15
12
  end
16
13
 
@@ -62,7 +59,7 @@ Backup::Notifier::Mail.defaults do |notifier|
62
59
  notifier.enable_starttls_auto = opts['enable_starttls_auto'] || true
63
60
  notifier.sendmail = opts['sendmail']
64
61
  notifier.sendmail_args = opts['sendmail_args']
65
- notifier.mail_folder = Backup::SpecLive::TMP_PATH
62
+ notifier.mail_folder = SpecLive::TMP_PATH
66
63
  end
67
64
 
68
65
  Backup::Syncer::Cloud::S3.defaults do |s3|
@@ -75,79 +72,12 @@ Backup::Syncer::Cloud::S3.defaults do |s3|
75
72
  s3.mirror = true
76
73
  end
77
74
 
78
- ##
79
- # Models
80
-
81
- Backup::Model.new(:archive_local, 'test_label') do
82
- archive :test_archive, &archive_job
83
- store_with Local
84
- end
85
-
86
- Backup::Model.new(:archive_scp, 'test_label') do
87
- archive :test_archive, &archive_job
88
- store_with SCP
89
- end
90
-
91
- # To initialize the Dropbox session cache, run manually first using:
92
- # VERBOSE=1 rspec spec-live/storage/dropbox_spec.rb --tag init
93
- Backup::Model.new(:archive_dropbox, 'test_label') do
94
- archive :test_archive, &archive_job
95
- store_with Dropbox
96
- end
97
-
98
- Backup::Model.new(:compressor_gzip_archive_local, 'test_label') do
99
- archive :test_archive, &archive_job
100
- compress_with Gzip
101
- store_with Local
75
+ Backup::Encryptor::GPG.defaults do |enc|
76
+ enc.gpg_homedir = File.join(SpecLive::TMP_PATH, 'gpg_home_tmp')
102
77
  end
103
78
 
104
- Backup::Model.new(:compressor_custom_archive_local, 'test_label') do
105
- archive :test_archive, &archive_job
106
- compress_with Custom do |c|
107
- c.command = 'gzip -1'
108
- c.extension = '.foo'
109
- end
110
- store_with Local
111
- end
112
-
113
- Backup::Model.new(:notifier_mail, 'test_label') do
114
- notify_by Mail
115
- end
116
-
117
- Backup::Model.new(:notifier_mail_file, 'test_label') do
118
- notify_by Mail do |mail|
119
- mail.to = 'test@backup'
120
- mail.delivery_method = :file
121
- end
122
- end
123
-
124
- Backup::Model.new(:syncer_cloud_s3, 'test_label') do
125
- sync_with Cloud::S3 do |s3|
126
- s3.directories do
127
- add File.join(Backup::SpecLive::SYNC_PATH, 'dir_a')
128
- add File.join(Backup::SpecLive::SYNC_PATH, 'dir_b')
129
- end
130
- end
131
- end
132
-
133
- Backup::Model.new(:syncer_cloud_processes_s3, 'test_label') do
134
- sync_with Cloud::S3 do |s3|
135
- s3.concurrency_type = :processes
136
- s3.concurrency_level = 2
137
- s3.directories do
138
- add File.join(Backup::SpecLive::SYNC_PATH, 'dir_a')
139
- add File.join(Backup::SpecLive::SYNC_PATH, 'dir_b')
140
- end
141
- end
142
- end
143
-
144
- Backup::Model.new(:syncer_cloud_threads_s3, 'test_label') do
145
- sync_with Cloud::S3 do |s3|
146
- s3.concurrency_type = :threads
147
- s3.concurrency_level = 2
148
- s3.directories do
149
- add File.join(Backup::SpecLive::SYNC_PATH, 'dir_a')
150
- add File.join(Backup::SpecLive::SYNC_PATH, 'dir_b')
151
- end
152
- end
79
+ ##
80
+ # Load the Models, unless h_set_single_model() is being used.
81
+ if SpecLive.load_models
82
+ instance_eval File.read(File.join(File.dirname(__FILE__), 'models.rb'))
153
83
  end
@@ -41,3 +41,6 @@ syncer:
41
41
  secret_access_key:
42
42
  bucket:
43
43
  region:
44
+ encryptor:
45
+ gpg:
46
+ specs_enabled: false
@@ -0,0 +1,184 @@
1
+ ##
2
+ # Models
3
+
4
+ Backup::Model.new(:archive_local, 'test_label') do
5
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
6
+ store_with Local
7
+ end
8
+
9
+ Backup::Model.new(:archive_scp, 'test_label') do
10
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
11
+ store_with SCP
12
+ end
13
+
14
+ # To initialize the Dropbox session cache, run manually first using:
15
+ # VERBOSE=1 rspec spec-live/storage/dropbox_spec.rb --tag init
16
+ Backup::Model.new(:archive_dropbox, 'test_label') do
17
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
18
+ store_with Dropbox
19
+ end
20
+
21
+ Backup::Model.new(:compressor_gzip_archive_local, 'test_label') do
22
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
23
+ compress_with Gzip
24
+ store_with Local
25
+ end
26
+
27
+ Backup::Model.new(:compressor_custom_archive_local, 'test_label') do
28
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
29
+ compress_with Custom do |c|
30
+ c.command = 'gzip -1'
31
+ c.extension = '.foo'
32
+ end
33
+ store_with Local
34
+ end
35
+
36
+ Backup::Model.new(:notifier_mail, 'test_label') do
37
+ notify_by Mail
38
+ end
39
+
40
+ Backup::Model.new(:notifier_mail_file, 'test_label') do
41
+ notify_by Mail do |mail|
42
+ mail.to = 'test@backup'
43
+ mail.delivery_method = :file
44
+ end
45
+ end
46
+
47
+ Backup::Model.new(:syncer_cloud_s3, 'test_label') do
48
+ sync_with Cloud::S3 do |s3|
49
+ s3.directories do
50
+ add File.join(SpecLive::SYNC_PATH, 'dir_a')
51
+ add File.join(SpecLive::SYNC_PATH, 'dir_b')
52
+ end
53
+ end
54
+ end
55
+
56
+ Backup::Model.new(:encryptor_gpg_asymmetric, 'test_label') do
57
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
58
+ encrypt_with GPG do |e|
59
+ # this is the default mode
60
+ # e.mode = :asymmetric
61
+
62
+ e.keys = {
63
+ # backup03 public key (email as identifier)
64
+ 'backup03@foo.com' => SpecLive::GPGKeys[:backup03][:public],
65
+ # backup04 public key (long key id as identifier)
66
+ '0F45932D3F24426D' => SpecLive::GPGKeys[:backup04][:public]
67
+ }
68
+
69
+ # The public keys for backup01 and backup02 will be in the system keyring
70
+ # when this job is run. The public keys for backup03 and backup04 will be
71
+ # imported from :keys above when they are not found in the system keyring.
72
+ e.recipients = [
73
+ # backup01 (short keyid)
74
+ '16325C61',
75
+ # backup02 (key fingerprint)
76
+ 'F9A9 9BD8 A570 182F F190 037C 7118 9938 6A6A 175A',
77
+ # backup03 (email)
78
+ 'backup03@foo.com',
79
+ # backup04 (long keyid)
80
+ '0F45932D3F24426D'
81
+ ]
82
+ end
83
+ store_with Local
84
+ end
85
+
86
+ Backup::Model.new(:encryptor_gpg_asymmetric_missing, 'test_label') do
87
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
88
+ encrypt_with GPG do |e|
89
+ e.mode = :asymmetric
90
+
91
+ e.keys = {
92
+ 'backup02@foo.com' => SpecLive::GPGKeys[:backup02][:public]
93
+ }
94
+
95
+ e.recipients = [
96
+ 'backup01@foo.com', # in the system
97
+ 'backup02@foo.com', # imported from #keys
98
+ 'backupfoo@foo.com' # a recipient with no public key
99
+ ]
100
+ end
101
+ store_with Local
102
+ end
103
+
104
+ Backup::Model.new(:encryptor_gpg_asymmetric_fail, 'test_label') do
105
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
106
+ encrypt_with GPG do |e|
107
+ # this is the default mode
108
+ # e.mode = :asymmetric
109
+
110
+ # no recipients have public keys available
111
+ e.recipients = [
112
+ 'backupfoo@foo.com',
113
+ 'backupfoo2@foo.com'
114
+ ]
115
+ end
116
+ store_with Local
117
+ end
118
+
119
+ Backup::Model.new(:encryptor_gpg_symmetric, 'test_label') do
120
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
121
+ encrypt_with GPG do |e|
122
+ e.mode = :symmetric
123
+ e.passphrase = 'a secret'
124
+ end
125
+ store_with Local
126
+ end
127
+
128
+ Backup::Model.new(:encryptor_gpg_symmetric_with_config, 'test_label') do
129
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
130
+ encrypt_with GPG do |e|
131
+ e.mode = :symmetric
132
+ e.passphrase = 'a secret'
133
+ e.gpg_config = <<-EOS
134
+ personal-cipher-preferences AES256 CAST5
135
+ EOS
136
+ end
137
+ store_with Local
138
+ end
139
+
140
+ Backup::Model.new(:encryptor_gpg_both, 'test_label') do
141
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
142
+ encrypt_with GPG do |e|
143
+ e.mode = :both
144
+ e.passphrase = 'a secret'
145
+
146
+ e.keys = {
147
+ # backup03 public key (email as identifier)
148
+ 'backup03@foo.com' => SpecLive::GPGKeys[:backup03][:public]
149
+ }
150
+
151
+ # The public key for backup01 will be in the system keyring.
152
+ # The public key for backup03 will be imported from :keys.
153
+ e.recipients = [
154
+ # backup01 (short keyid)
155
+ '16325C61',
156
+ # backup03 (email)
157
+ 'backup03@foo.com'
158
+ ]
159
+ end
160
+ store_with Local
161
+ end
162
+
163
+ Backup::Model.new(:encryptor_gpg_both_no_asymmetric, 'test_label') do
164
+ archive :test_archive, &SpecLive::ARCHIVE_JOB
165
+ encrypt_with GPG do |e|
166
+ e.mode = :both
167
+ e.passphrase = 'a secret'
168
+
169
+ # valid entry for backup04, but this is not one of the recipients
170
+ e.keys = {
171
+ 'backup04@foo.com' => SpecLive::GPGKeys[:backup04][:public]
172
+ }
173
+
174
+ # no keys will be found for these,
175
+ # so only symmetric encryption will be possible for this backup
176
+ e.recipients = [
177
+ # backup01 (short keyid)
178
+ '16325C61',
179
+ # backup03 (email)
180
+ 'backup03@foo.com'
181
+ ]
182
+ end
183
+ store_with Local
184
+ end
@@ -0,0 +1,239 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module SpecLive
5
+ GPGKeys = Hash.new {|h,k| h[k] = {} }
6
+
7
+ GPGKeys[:backup01][:long_id] = '8F5D150616325C61'
8
+ GPGKeys[:backup01][:public] = <<-EOS
9
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
10
+ Version: GnuPG v1.4.12 (GNU/Linux)
11
+
12
+ mI0EUBR6CwEEAMVSlFtAXO4jXYnVFAWy6chyaMw+gXOFKlWojNXOOKmE3SujdLKh
13
+ kWqnafx7VNrb8cjqxz6VZbumN9UgerFpusM3uLCYHnwyv/rGMf4cdiuX7gGltwGb
14
+ dwP18gzdDanXYvO4G7qtk8DH1lRI/TnLH8wAoY/DthSR//wcP33GxRnrABEBAAG0
15
+ HkJhY2t1cCBUZXN0IDxiYWNrdXAwMUBmb28uY29tPoi4BBMBAgAiBQJQFHoLAhsD
16
+ BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCPXRUGFjJcYZc5A/91HQ4+BXUw
17
+ KUHmpGyD+6b42xl3eBdmBVimCYTgfRUyRQEDWzHV4a3cYWwe30J/LzfFn1E6uVwz
18
+ 6SHtzwZddWwONRgC/Q7V0TrnLeuv46MKoB24EFqfbr0kosuZgHPuK4h+rLmaPVCM
19
+ kv9DcKCupGnFzoaZ7tdgQAXzGepZQZU0sbiNBFAUegsBBACXX6cGjaENoOMyibXh
20
+ HLlEOKWwlxDgo3bSu6U8kISUmwxH/MO4I/u7BAQBczitNYSWovlbvCcxCy4h12qj
21
+ gruN5INIDGsEfDSWcN3lxBZ+9J+FhngBjETeADFaPxoele9wVGdIYdLIP6RntK/D
22
+ 6F2ER8sb57YYtK50iyyuYQqSeQARAQABiJ8EGAECAAkFAlAUegsCGwwACgkQj10V
23
+ BhYyXGEq7AP/Y/k1A6nrCC6bfkHFMJmEJDe0Wb6q8P3gcBqNuf8iOwk53UdoXU0Q
24
+ JcPAQd/sJy6914huN2dzbVCSchSkLRXgejI0Xf5go1sDzspVKEflu0CWZ3A976QH
25
+ mLekS3xntUhhgHKc4lhf4IVBqG4cFmwSZ0tZEJJUSESb3TqkkdnNLjE=
26
+ =KEW+
27
+ -----END PGP PUBLIC KEY BLOCK-----
28
+ EOS
29
+ GPGKeys[:backup01][:private] = <<-EOS
30
+ -----BEGIN PGP PRIVATE KEY BLOCK-----
31
+ Version: GnuPG v1.4.12 (GNU/Linux)
32
+
33
+ lQHYBFAUegsBBADFUpRbQFzuI12J1RQFsunIcmjMPoFzhSpVqIzVzjiphN0ro3Sy
34
+ oZFqp2n8e1Ta2/HI6sc+lWW7pjfVIHqxabrDN7iwmB58Mr/6xjH+HHYrl+4BpbcB
35
+ m3cD9fIM3Q2p12LzuBu6rZPAx9ZUSP05yx/MAKGPw7YUkf/8HD99xsUZ6wARAQAB
36
+ AAP/VJDiogUAjtK7SNH4BcU6qjxWK4pyQkcE8LcOvKbn48bcXtJrtg7GWpYrNxjI
37
+ Mg/nHHt6Lpkqg3RmI0ILMzOj5TukhmJnB/ieogFyuiVzymcMdkcx8PRNXIoF90Au
38
+ 8yp5ZgXdStmIrlxh4ofJsas8YWsVynb+r6FT2UrAjYT3vAECANoCF26P14ZtGQJ4
39
+ eT4a19wzlcIDMuKFaXlB5WYCnQi43ngKn/mjdQrNfpfSPNF+oCHlWGisz0fg/51+
40
+ NXg46+sCAOe1pm8K6qO20SzkAW0b9Hzk0b0JWJiHk1QiB1gR9KZffC/8Y7rqYaiG
41
+ Sbtyc3ujjayFdc90bwZeSkzrCvO/CgEB/3jiuZiAOov2JFMMPzp7S9SS3CN8nopp
42
+ xupeE6uH3Kxp24XYgLxfRO9iqZK/BRlkb5fUKw8u08J5439X9o9mBUOf4bQeQmFj
43
+ a3VwIFRlc3QgPGJhY2t1cDAxQGZvby5jb20+iLgEEwECACIFAlAUegsCGwMGCwkI
44
+ BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEI9dFQYWMlxhlzkD/3UdDj4FdTApQeak
45
+ bIP7pvjbGXd4F2YFWKYJhOB9FTJFAQNbMdXhrdxhbB7fQn8vN8WfUTq5XDPpIe3P
46
+ Bl11bA41GAL9DtXROuct66/jowqgHbgQWp9uvSSiy5mAc+4riH6suZo9UIyS/0Nw
47
+ oK6kacXOhpnu12BABfMZ6llBlTSxnQHYBFAUegsBBACXX6cGjaENoOMyibXhHLlE
48
+ OKWwlxDgo3bSu6U8kISUmwxH/MO4I/u7BAQBczitNYSWovlbvCcxCy4h12qjgruN
49
+ 5INIDGsEfDSWcN3lxBZ+9J+FhngBjETeADFaPxoele9wVGdIYdLIP6RntK/D6F2E
50
+ R8sb57YYtK50iyyuYQqSeQARAQABAAP6Akx2AvtBheKqnJIl3cn5FWxWS3Q/Jygi
51
+ +2rVJNJYKbu2hVJ/xDMLWoZNC3AXsof95X3f/e4sJVpN/FPS/IdqqBmZpREOzash
52
+ fWAjs6j7Z7lQEuxKvdSdcy4olzcYGOegYaZpL0B9eeOtX3Hb4JXHwp0i9NwFlXgg
53
+ MR10rIy48qECAMBEW64UAaZ31/Q1P0NXfMYTm+vogrAi8lsVdSAjDBAKtAD3+mGD
54
+ JGymg0R6uzw9xDijN9HgBi55TfCAiVoVhiECAMmNHHuypUMVsPstBtUEELwDHH7K
55
+ acWFNhi6x4Ccl1C7xncKK6BedjjwP8K06hBjWAkBzNUwX79N0Lm+ob9O0VkB+wdE
56
+ ykurS0qEob/PiLBA5ksWRA1EKLQ/PjEmSxYJAldVLyKtUPtfyXVKTpZ2xCwuLi/m
57
+ sspaiPeTJp7Gtr1l/smYf4ifBBgBAgAJBQJQFHoLAhsMAAoJEI9dFQYWMlxhKuwD
58
+ /2P5NQOp6wgum35BxTCZhCQ3tFm+qvD94HAajbn/IjsJOd1HaF1NECXDwEHf7Ccu
59
+ vdeIbjdnc21QknIUpC0V4HoyNF3+YKNbA87KVShH5btAlmdwPe+kB5i3pEt8Z7VI
60
+ YYBynOJYX+CFQahuHBZsEmdLWRCSVEhEm906pJHZzS4x
61
+ =ls9W
62
+ -----END PGP PRIVATE KEY BLOCK-----
63
+ EOS
64
+
65
+ GPGKeys[:backup02][:long_id] = '711899386A6A175A'
66
+ GPGKeys[:backup02][:public] = <<-EOS
67
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
68
+ Version: GnuPG v1.4.12 (GNU/Linux)
69
+
70
+ mI0EUBR6JQEEAMPuY4qoKR7MpZA7D+KRrhiJRCT8t5F4IZ+gq7FBCfwoopcStlin
71
+ nTGRL1F/UEngu5xHgLsERzPdKNoTpoy1aCcgB7i9vyi2bA3iNGs1YzWqf1vGJxEp
72
+ +CXXtlBU+QYod6wRMK4cHKVjPaD+Ga+saU1Pz9tBGYAbADYVmhJd7R21ABEBAAG0
73
+ HkJhY2t1cCBUZXN0IDxiYWNrdXAwMkBmb28uY29tPoi4BBMBAgAiBQJQFHolAhsD
74
+ BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBxGJk4amoXWjJxA/sG60qZMn40
75
+ IP0pjuY+3kc5199xcavxgHZdQTBq2vrJHzr3K8Zk8xxSCADRJf4++t4+8yG7g9rk
76
+ bmEAeGoFBIbdx7zGcxYIe5g9UG/+eDCJ44HCb0v8vHUT7iqt5Jk6cryYtcYvqO6I
77
+ 84HXdXz4rCMCUeRP4ceMCZB6GZKDXR8zoriNBFAUeiUBBADEEOUdfCmwJ5BEPWzm
78
+ QTGcp2dSY8SgpbZtk23LvWIlEziYflIqOGeL623AOBb9S2FChR+zPyOA9D3LEZrA
79
+ PF8TS3YY+qjBdiXLKchRr5y2Kwylh/vVdcCcgTjfPkga4pGq+cHBOevPiqAvoCtO
80
+ ntN7+Cqk3B7nWTPQRFDQJVThwwARAQABiJ8EGAECAAkFAlAUeiUCGwwACgkQcRiZ
81
+ OGpqF1oNNgP/adkSZZVaYy/JEHjjrtC9UwirSluAdHQZGPGv/FHaFou+4mlLi0+R
82
+ gQLieU+3AHFSWVYMNjIsSjA4hhMLchteFlJnbkGAFUaA2QUoyf7cSSmdpNKQdDdZ
83
+ oe3OXEQM2pUTEwE9AqKXthrSMQuJ5bozm8zHm/CohZPHGTeQH75Kq/4=
84
+ =AgbQ
85
+ -----END PGP PUBLIC KEY BLOCK-----
86
+ EOS
87
+ GPGKeys[:backup02][:private] = <<-EOS
88
+ -----BEGIN PGP PRIVATE KEY BLOCK-----
89
+ Version: GnuPG v1.4.12 (GNU/Linux)
90
+
91
+ lQHYBFAUeiUBBADD7mOKqCkezKWQOw/ika4YiUQk/LeReCGfoKuxQQn8KKKXErZY
92
+ p50xkS9Rf1BJ4LucR4C7BEcz3SjaE6aMtWgnIAe4vb8otmwN4jRrNWM1qn9bxicR
93
+ Kfgl17ZQVPkGKHesETCuHBylYz2g/hmvrGlNT8/bQRmAGwA2FZoSXe0dtQARAQAB
94
+ AAP9Ek+8U+Alf7BmpNUwRd+Ros9pY/+OdHUCx3VvtnA6q6tsjqv8CMsZgOFtx7Mb
95
+ YNw1DIUOPexHb0xzHfaKMUpfAmc4PRYnEiggloT+UmB/Hs2tHfeE3hONiDDD9PMU
96
+ PiFmm2d+P0pRVTZUrioBaACWpu5YS03I6SC0zDdJeJapk10CANvaaRUZwBqpccfR
97
+ MFuV78NYPDkgwKuIJzMRFvp2PnEYPKmS7Ivz5ZimwltDukEOdmTCUAjW6iibKav5
98
+ EFmENSMCAOQlGzr3kQRNbcTWh4MYqQ0mDS0Gv9IWZR1DJBPziWnaMqvMyRrFK031
99
+ WXzHFDkhbph/HjZ0M33e7bsaLfBsq0cB/Ag+/9rJyTAOyCgbx4VNeipuseiLW3rn
100
+ gE5UdJa2FHpZcJqHk81IssCTVLnU3NADH0Eg6rVB4/31L1CtlkxgxZiXWbQeQmFj
101
+ a3VwIFRlc3QgPGJhY2t1cDAyQGZvby5jb20+iLgEEwECACIFAlAUeiUCGwMGCwkI
102
+ BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHEYmThqahdaMnED+wbrSpkyfjQg/SmO
103
+ 5j7eRznX33Fxq/GAdl1BMGra+skfOvcrxmTzHFIIANEl/j763j7zIbuD2uRuYQB4
104
+ agUEht3HvMZzFgh7mD1Qb/54MInjgcJvS/y8dRPuKq3kmTpyvJi1xi+o7ojzgdd1
105
+ fPisIwJR5E/hx4wJkHoZkoNdHzOinQHXBFAUeiUBBADEEOUdfCmwJ5BEPWzmQTGc
106
+ p2dSY8SgpbZtk23LvWIlEziYflIqOGeL623AOBb9S2FChR+zPyOA9D3LEZrAPF8T
107
+ S3YY+qjBdiXLKchRr5y2Kwylh/vVdcCcgTjfPkga4pGq+cHBOevPiqAvoCtOntN7
108
+ +Cqk3B7nWTPQRFDQJVThwwARAQABAAP0CszwvLeNuTt80e53OXmOmYJZ6zhzRz2k
109
+ kiX+LwzoRKjYycFdFz3gCqiDj9w1Pq6Pcx030Wmh+tI07znhkXGG6WgEdg3WMBa0
110
+ ephoNZKsmU2Xhbpf/au8uNwXLtaCEgZoC04JGlGzbX4gJXyUooW+/paxZMQFWFlM
111
+ ztf04oIHFQIA2+wOHvJc3HxP0I1Gtfx9bf27UKp1O/4te3m8yOZuIb8gAhlvqkJr
112
+ q+HcJ6604c8vKBHA08F+E6EJ8Sdt/eMlTwIA5Dr4AmGEKqkk92FuXm6R0ruo9Bm3
113
+ Ep7eFCjRul5lKV/lTF88+KLrzMzho1E/9BgiOKvm7Z1yQTZQUAHEwcqHTQIAusG5
114
+ gr2CASWpXbCxX6DWl8n7hdWAhGR0wHWk3ValNl0hLzxMx2Icf2ZWZ3rZw2/JsLiQ
115
+ oujz1T1DWgxsNyZaraPsiJ8EGAECAAkFAlAUeiUCGwwACgkQcRiZOGpqF1oNNgP/
116
+ adkSZZVaYy/JEHjjrtC9UwirSluAdHQZGPGv/FHaFou+4mlLi0+RgQLieU+3AHFS
117
+ WVYMNjIsSjA4hhMLchteFlJnbkGAFUaA2QUoyf7cSSmdpNKQdDdZoe3OXEQM2pUT
118
+ EwE9AqKXthrSMQuJ5bozm8zHm/CohZPHGTeQH75Kq/4=
119
+ =+a/7
120
+ -----END PGP PRIVATE KEY BLOCK-----
121
+ EOS
122
+
123
+ GPGKeys[:backup03][:long_id] = '5847D49DD791E4FA'
124
+ GPGKeys[:backup03][:public] = <<-EOS
125
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
126
+ Version: GnuPG v1.4.12 (GNU/Linux)
127
+
128
+ mI0EUBR4LgEEAL6TxhYYNEirawnp/fmc0TwKYVSiTk60qGJyspEj0QKJ3MmunC/o
129
+ YX+5k8HN68BKP7xkJyHYFdXCJn2HqSbj0T7oV4scQGLJSO5adNa/6uMDZIA6Ptt4
130
+ UFOwdc8bnV9sDQTdrp2Gqsxi3f34WX0DV7/KrMD/jQJ9hiWphXSmvaV9ABEBAAG0
131
+ HkJhY2t1cCBUZXN0IDxiYWNrdXAwM0Bmb28uY29tPoi4BBMBAgAiBQJQFHguAhsD
132
+ BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBYR9Sd15Hk+shkA/4yev3zyK+/
133
+ jPZQgFLq10biRDYMdWk4ysHCkSbBi4GMnjIanBFk6ggbH/jQIb79oZRv2MB/N8Ag
134
+ 4s1oZdC5W1gSCg4m4pUB06NkKD4NvKAHHzsfr93farAct1zBQJ19e2ErFeo2Bb5G
135
+ uAvf2VWziMQD9aB0lF6tf/CToeWp+2xK77iNBFAUeC4BBADGwKc66SFldjN9dIxk
136
+ NYWLwCSvEgsOUdQpYckWLeUFnvKMpOW9+0Q5fc7QZuTs4TnT6cHjKk7F4ZQpMlqy
137
+ vc5H99vfp+/fus4LyAYIZKXmuc44SWwxU0y2MsGguFZbWKctQLquKD3uk3S8LPvY
138
+ wYn5weLVOhoUgbYGi6HeK8hkuQARAQABiJ8EGAECAAkFAlAUeC4CGwwACgkQWEfU
139
+ ndeR5PqQIQP8DMrzFSpyOEsxWRC8x4dhBtpptjO2MIS9FsX9pmycC52V9mCQX5pb
140
+ 5ZN6YPHOArYNUQfrXGRrOQFAPuNaucet/w39KIOmMZGPRGzOkTmp4AEhO7fKtuw8
141
+ /oWOO6hlX/rG4JNZUu3DQEt8WKCV9dHGxNWkxEptRA/CRYW4aj0MkaE=
142
+ =dxCg
143
+ -----END PGP PUBLIC KEY BLOCK-----
144
+ EOS
145
+ GPGKeys[:backup03][:private] = <<-EOS
146
+ -----BEGIN PGP PRIVATE KEY BLOCK-----
147
+ Version: GnuPG v1.4.12 (GNU/Linux)
148
+
149
+ lQHYBFAUeC4BBAC+k8YWGDRIq2sJ6f35nNE8CmFUok5OtKhicrKRI9ECidzJrpwv
150
+ 6GF/uZPBzevASj+8ZCch2BXVwiZ9h6km49E+6FeLHEBiyUjuWnTWv+rjA2SAOj7b
151
+ eFBTsHXPG51fbA0E3a6dhqrMYt39+Fl9A1e/yqzA/40CfYYlqYV0pr2lfQARAQAB
152
+ AAP9HVrYQHd+eDIVRPvqr7vwu7mSl+1/N97ab/2gVTxp2aUAIf24F6YI/JpKcOgF
153
+ 2ALn0d4wa+VjqZ8j/CJ9Et01EeIkEl9rDBVHLFKLpEABSRCCPpYPBhNqKgRQnLBl
154
+ M9kb6OxlBF0Y2L7oonq19Txer8FNB724m7yvBlWQko5id6ECAND9Cgn/YVuj83Es
155
+ DEBMjyAysgs3L69CoKQRL02PULbfVgabKqKqFJKDZr4DVyVo6v0L/c9pvnrz5GZG
156
+ McGH390CAOlyfn9fWtNjMci+DZ2ZXjut8FXnU+ChyGoc62brcQ0YE1767pyIpmxe
157
+ sG06jTMPpmBSA1xbMpScfLQehnLJUiEB/3f3U/8UiUTmB8bWe2JpHefJAn3Y8VLr
158
+ tLXujEmYqrn6kUNo1UgIodLtlKY/HfYm6gvcBl5W4+z7FnDBWwDIlX6e/7QeQmFj
159
+ a3VwIFRlc3QgPGJhY2t1cDAzQGZvby5jb20+iLgEEwECACIFAlAUeC4CGwMGCwkI
160
+ BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEFhH1J3XkeT6yGQD/jJ6/fPIr7+M9lCA
161
+ UurXRuJENgx1aTjKwcKRJsGLgYyeMhqcEWTqCBsf+NAhvv2hlG/YwH83wCDizWhl
162
+ 0LlbWBIKDibilQHTo2QoPg28oAcfOx+v3d9qsBy3XMFAnX17YSsV6jYFvka4C9/Z
163
+ VbOIxAP1oHSUXq1/8JOh5an7bErvnQHYBFAUeC4BBADGwKc66SFldjN9dIxkNYWL
164
+ wCSvEgsOUdQpYckWLeUFnvKMpOW9+0Q5fc7QZuTs4TnT6cHjKk7F4ZQpMlqyvc5H
165
+ 99vfp+/fus4LyAYIZKXmuc44SWwxU0y2MsGguFZbWKctQLquKD3uk3S8LPvYwYn5
166
+ weLVOhoUgbYGi6HeK8hkuQARAQABAAP9G+yT4lFAXbC8fb8a/XZOl8qsbMN4da/W
167
+ AuVn+vuCPqatFckSNT3BAWHVZY7bUZO4S/d/A/NdA2zU4+/c8dl8inzv5tAmVFQY
168
+ w9XYZoA8d4GS+IflmVAzu8aWJlQLfMI8HKtwrf4gpSjZFsLIe9E/xQSgGWt1WXJ5
169
+ fbgbBKBLRB0CANF5C0VHOg/zIc7AODCi9GYqYWxQE0MiMhh1SzuG/NVHke+ldhqb
170
+ ogV+TMBAR8PCRNf64cKtXyJ2u5ZnXlSBWdUCAPLmCZBCFW3hm/26fdAovNHA53HZ
171
+ ucxhwrLP0Ks1+vr779JMypl6QVYbbHXaI7oyRFKg5KOdz4S2ij213gVOzVUCAKy1
172
+ MftwhFXCrQwfuA8d2rnro4WqreNyzRj/7QL11N8oQ1XasHCuuOVpDVyuBxtwGLG3
173
+ KUeriIODL6Bo/RevX0an8YifBBgBAgAJBQJQFHguAhsMAAoJEFhH1J3XkeT6kCED
174
+ /AzK8xUqcjhLMVkQvMeHYQbaabYztjCEvRbF/aZsnAudlfZgkF+aW+WTemDxzgK2
175
+ DVEH61xkazkBQD7jWrnHrf8N/SiDpjGRj0RszpE5qeABITu3yrbsPP6FjjuoZV/6
176
+ xuCTWVLtw0BLfFiglfXRxsTVpMRKbUQPwkWFuGo9DJGh
177
+ =6CYb
178
+ -----END PGP PRIVATE KEY BLOCK-----
179
+ EOS
180
+
181
+ GPGKeys[:backup04][:long_id] = '0F45932D3F24426D'
182
+ GPGKeys[:backup04][:public] = <<-EOS
183
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
184
+ Version: GnuPG v1.4.12 (GNU/Linux)
185
+
186
+ mI0EUBR40wEEAMLAMVwpXCeEz1QZPJc8RFwAUBZRc/FYZ+CY4RKfQKZPuBMyzz3y
187
+ mk3gFB8raw2nycH00zwrP/qm/gIBzpCza+87uqGrB8bezgHoU1CaFnO0ZNUzyB8j
188
+ FsaQ/7BScjFNQp4RvbryZJUMXJ0V8fV9mQMe+O83CskabLCS4UY6EhWXABEBAAG0
189
+ HkJhY2t1cCBUZXN0IDxiYWNrdXAwNEBmb28uY29tPoi4BBMBAgAiBQJQFHjTAhsD
190
+ BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAPRZMtPyRCbU30A/0YU8U7EOKd
191
+ 5jSKhkAN50n4Cvwr0uOfC3UoJHInglRc+hDLB5ZF5GMqSfLYIb6/saY99Xb76l7i
192
+ k/0Q+rpk0AJ/dbY2ARrPqetleTPBsjrQbj9pzU4yvpYohpippjUbGAo74ssRGJoX
193
+ 28O98TXn8+q3bcz7bbLBmYj1Fy4QrSpBj7iNBFAUeNMBBADNBWFF0UFiPOCh9g3P
194
+ qOAYOXRsmEpLwGBGUB5ZdWzkIGrvs3KjTxIgy+uvx5Q8nX7+OLePaR9BM0qyryzz
195
+ LLjEKuaeDk1KelZ6/aV4ErgBUfVDs8pniLrSUqD65o18PL+T6nQ4aUYpgcqdb7t/
196
+ /by/yzt0+eEaAoArm0B8IdzB/QARAQABiJ8EGAECAAkFAlAUeNMCGwwACgkQD0WT
197
+ LT8kQm2LDgP/cUpWPR/GVdwLlbUIWBh37lLHEEuppZFg2P15Pv0UK9pNxCFhGouS
198
+ eBXW8xC/mvOrf7mj/tEV3CxGvIFdebtraEwLUQW0109vWHNclK6/SvmSNcaPo1t0
199
+ FtsIP4HI4ymvvTKUObfQliRdk1u1wY7sCWGarQgN9NtHuuyYP5+wmYg=
200
+ =LfdH
201
+ -----END PGP PUBLIC KEY BLOCK-----
202
+ EOS
203
+ GPGKeys[:backup04][:private] = <<-EOS
204
+ -----BEGIN PGP PRIVATE KEY BLOCK-----
205
+ Version: GnuPG v1.4.12 (GNU/Linux)
206
+
207
+ lQHYBFAUeNMBBADCwDFcKVwnhM9UGTyXPERcAFAWUXPxWGfgmOESn0CmT7gTMs89
208
+ 8ppN4BQfK2sNp8nB9NM8Kz/6pv4CAc6Qs2vvO7qhqwfG3s4B6FNQmhZztGTVM8gf
209
+ IxbGkP+wUnIxTUKeEb268mSVDFydFfH1fZkDHvjvNwrJGmywkuFGOhIVlwARAQAB
210
+ AAP8C0NOjNFu3Rw5r1fsS092y/P6rb0VMv0quMWup+3iMRwa0wVqZd9CHESGyrdZ
211
+ 8BwRjNrfXTNKdnEHmfnHxqeRvit+WRPCuhGcRTNJ8UTBPw4XMY/UYXHIXQGXwqk6
212
+ lzd+UQvqyZPv3ukuChDrXuCTG+443WFfHxl4S7PAn3aTwjUCANQjjqSweQZAHvn0
213
+ XXcnTNRDV8Bf+Sl7rxhMcBUJhFu3ALBWosZDI/zYTDQ/FZqbM8A9Poh6cnB2TS/S
214
+ 47kNwDMCAOsESXIs/RBg2RDactjqxj5TVn/T0PMZ1AhV2BPl2RmP/bnwyBWy0O9N
215
+ V3hKY0ArEEpcNf8HuRz7/nOduCtEYQ0CAN2AODbYyG/sL+wH0k392fpnsWmdYs4N
216
+ 21AgfPY8U3Oyrodgjz1hU3C3dxyE3co4sU42d3sLI2tpxa0xy6mHetKdbLQeQmFj
217
+ a3VwIFRlc3QgPGJhY2t1cDA0QGZvby5jb20+iLgEEwECACIFAlAUeNMCGwMGCwkI
218
+ BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEA9Fky0/JEJtTfQD/RhTxTsQ4p3mNIqG
219
+ QA3nSfgK/CvS458LdSgkcieCVFz6EMsHlkXkYypJ8tghvr+xpj31dvvqXuKT/RD6
220
+ umTQAn91tjYBGs+p62V5M8GyOtBuP2nNTjK+liiGmKmmNRsYCjviyxEYmhfbw73x
221
+ Nefz6rdtzPttssGZiPUXLhCtKkGPnQHYBFAUeNMBBADNBWFF0UFiPOCh9g3PqOAY
222
+ OXRsmEpLwGBGUB5ZdWzkIGrvs3KjTxIgy+uvx5Q8nX7+OLePaR9BM0qyryzzLLjE
223
+ KuaeDk1KelZ6/aV4ErgBUfVDs8pniLrSUqD65o18PL+T6nQ4aUYpgcqdb7t//by/
224
+ yzt0+eEaAoArm0B8IdzB/QARAQABAAP9H1IfFidtsbBTMOsCGSNXeNvuKVjqoL/2
225
+ 9UbwHAKQbBl3vL7RWJmPz2rXyrbWspvs9rF7eXE50SAg3UNdvpiqcSdBwC4VSDNe
226
+ VSbKaZ5MmqapC7ioLH/FEcvZgaZfTsTsLC10CIZgisW+z+zKq2fafwSI5o2XMuoE
227
+ /iuai9z6ZoECANEKpjytZB93+O2fUWPG7BjIzVUZGIeSxGKPze9jgQloHAou5sH8
228
+ WygPVlQzy9Xxt7Z9/QrZlGdalyeDQaoC6dkCAPsThN0K0s2pabEfMtYOneJzR5Xs
229
+ ze6aqs6+FpHikAISMswd5EHnfPtKA51bGxWKAxgeCqNMpf8tJMAFCmj2fsUB/3Z5
230
+ IZJE+OmdiMDm81yDNpK801RZAiySpbZ5CEaWB/BuuTIyG7k/dtSnWtodEOEcEjFs
231
+ yBaY+gUfFbKHBatQN7qf2oifBBgBAgAJBQJQFHjTAhsMAAoJEA9Fky0/JEJtiw4D
232
+ /3FKVj0fxlXcC5W1CFgYd+5SxxBLqaWRYNj9eT79FCvaTcQhYRqLkngV1vMQv5rz
233
+ q3+5o/7RFdwsRryBXXm7a2hMC1EFtNdPb1hzXJSuv0r5kjXGj6NbdBbbCD+ByOMp
234
+ r70ylDm30JYkXZNbtcGO7Alhmq0IDfTbR7rsmD+fsJmI
235
+ =I+GJ
236
+ -----END PGP PRIVATE KEY BLOCK-----
237
+ EOS
238
+ end
239
+ end