backup 3.0.26 → 3.0.27

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.
@@ -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