backup-agoddard 3.0.27

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of backup-agoddard might be problematic. Click here for more details.

Files changed (190) hide show
  1. data/.gitignore +8 -0
  2. data/.travis.yml +10 -0
  3. data/Gemfile +28 -0
  4. data/Guardfile +23 -0
  5. data/LICENSE.md +24 -0
  6. data/README.md +478 -0
  7. data/backup.gemspec +32 -0
  8. data/bin/backup +11 -0
  9. data/lib/backup.rb +133 -0
  10. data/lib/backup/archive.rb +117 -0
  11. data/lib/backup/binder.rb +22 -0
  12. data/lib/backup/cleaner.rb +121 -0
  13. data/lib/backup/cli/helpers.rb +93 -0
  14. data/lib/backup/cli/utility.rb +255 -0
  15. data/lib/backup/compressor/base.rb +35 -0
  16. data/lib/backup/compressor/bzip2.rb +50 -0
  17. data/lib/backup/compressor/custom.rb +53 -0
  18. data/lib/backup/compressor/gzip.rb +50 -0
  19. data/lib/backup/compressor/lzma.rb +52 -0
  20. data/lib/backup/compressor/pbzip2.rb +59 -0
  21. data/lib/backup/config.rb +174 -0
  22. data/lib/backup/configuration.rb +33 -0
  23. data/lib/backup/configuration/helpers.rb +130 -0
  24. data/lib/backup/configuration/store.rb +24 -0
  25. data/lib/backup/database/base.rb +53 -0
  26. data/lib/backup/database/mongodb.rb +230 -0
  27. data/lib/backup/database/mysql.rb +160 -0
  28. data/lib/backup/database/postgresql.rb +144 -0
  29. data/lib/backup/database/redis.rb +136 -0
  30. data/lib/backup/database/riak.rb +67 -0
  31. data/lib/backup/dependency.rb +108 -0
  32. data/lib/backup/encryptor/base.rb +29 -0
  33. data/lib/backup/encryptor/gpg.rb +760 -0
  34. data/lib/backup/encryptor/open_ssl.rb +72 -0
  35. data/lib/backup/errors.rb +124 -0
  36. data/lib/backup/hooks.rb +68 -0
  37. data/lib/backup/logger.rb +152 -0
  38. data/lib/backup/model.rb +409 -0
  39. data/lib/backup/notifier/base.rb +81 -0
  40. data/lib/backup/notifier/campfire.rb +155 -0
  41. data/lib/backup/notifier/hipchat.rb +93 -0
  42. data/lib/backup/notifier/mail.rb +206 -0
  43. data/lib/backup/notifier/prowl.rb +65 -0
  44. data/lib/backup/notifier/pushover.rb +88 -0
  45. data/lib/backup/notifier/twitter.rb +70 -0
  46. data/lib/backup/package.rb +47 -0
  47. data/lib/backup/packager.rb +100 -0
  48. data/lib/backup/pipeline.rb +110 -0
  49. data/lib/backup/splitter.rb +75 -0
  50. data/lib/backup/storage/base.rb +99 -0
  51. data/lib/backup/storage/cloudfiles.rb +87 -0
  52. data/lib/backup/storage/cycler.rb +117 -0
  53. data/lib/backup/storage/dropbox.rb +178 -0
  54. data/lib/backup/storage/ftp.rb +119 -0
  55. data/lib/backup/storage/local.rb +82 -0
  56. data/lib/backup/storage/ninefold.rb +116 -0
  57. data/lib/backup/storage/rsync.rb +149 -0
  58. data/lib/backup/storage/s3.rb +94 -0
  59. data/lib/backup/storage/scp.rb +99 -0
  60. data/lib/backup/storage/sftp.rb +108 -0
  61. data/lib/backup/syncer/base.rb +46 -0
  62. data/lib/backup/syncer/cloud/base.rb +247 -0
  63. data/lib/backup/syncer/cloud/cloud_files.rb +78 -0
  64. data/lib/backup/syncer/cloud/s3.rb +68 -0
  65. data/lib/backup/syncer/rsync/base.rb +49 -0
  66. data/lib/backup/syncer/rsync/local.rb +55 -0
  67. data/lib/backup/syncer/rsync/pull.rb +36 -0
  68. data/lib/backup/syncer/rsync/push.rb +116 -0
  69. data/lib/backup/template.rb +46 -0
  70. data/lib/backup/version.rb +43 -0
  71. data/spec-live/.gitignore +6 -0
  72. data/spec-live/README +7 -0
  73. data/spec-live/backups/config.rb +83 -0
  74. data/spec-live/backups/config.yml.template +46 -0
  75. data/spec-live/backups/models.rb +184 -0
  76. data/spec-live/compressor/custom_spec.rb +30 -0
  77. data/spec-live/compressor/gzip_spec.rb +30 -0
  78. data/spec-live/encryptor/gpg_keys.rb +239 -0
  79. data/spec-live/encryptor/gpg_spec.rb +287 -0
  80. data/spec-live/notifier/mail_spec.rb +121 -0
  81. data/spec-live/spec_helper.rb +151 -0
  82. data/spec-live/storage/dropbox_spec.rb +151 -0
  83. data/spec-live/storage/local_spec.rb +83 -0
  84. data/spec-live/storage/scp_spec.rb +193 -0
  85. data/spec-live/syncer/cloud/s3_spec.rb +124 -0
  86. data/spec/archive_spec.rb +335 -0
  87. data/spec/cleaner_spec.rb +312 -0
  88. data/spec/cli/helpers_spec.rb +301 -0
  89. data/spec/cli/utility_spec.rb +411 -0
  90. data/spec/compressor/base_spec.rb +52 -0
  91. data/spec/compressor/bzip2_spec.rb +217 -0
  92. data/spec/compressor/custom_spec.rb +106 -0
  93. data/spec/compressor/gzip_spec.rb +217 -0
  94. data/spec/compressor/lzma_spec.rb +123 -0
  95. data/spec/compressor/pbzip2_spec.rb +165 -0
  96. data/spec/config_spec.rb +321 -0
  97. data/spec/configuration/helpers_spec.rb +247 -0
  98. data/spec/configuration/store_spec.rb +39 -0
  99. data/spec/configuration_spec.rb +62 -0
  100. data/spec/database/base_spec.rb +63 -0
  101. data/spec/database/mongodb_spec.rb +510 -0
  102. data/spec/database/mysql_spec.rb +411 -0
  103. data/spec/database/postgresql_spec.rb +353 -0
  104. data/spec/database/redis_spec.rb +334 -0
  105. data/spec/database/riak_spec.rb +176 -0
  106. data/spec/dependency_spec.rb +51 -0
  107. data/spec/encryptor/base_spec.rb +40 -0
  108. data/spec/encryptor/gpg_spec.rb +909 -0
  109. data/spec/encryptor/open_ssl_spec.rb +148 -0
  110. data/spec/errors_spec.rb +306 -0
  111. data/spec/hooks_spec.rb +35 -0
  112. data/spec/logger_spec.rb +367 -0
  113. data/spec/model_spec.rb +694 -0
  114. data/spec/notifier/base_spec.rb +104 -0
  115. data/spec/notifier/campfire_spec.rb +217 -0
  116. data/spec/notifier/hipchat_spec.rb +211 -0
  117. data/spec/notifier/mail_spec.rb +316 -0
  118. data/spec/notifier/prowl_spec.rb +138 -0
  119. data/spec/notifier/pushover_spec.rb +123 -0
  120. data/spec/notifier/twitter_spec.rb +153 -0
  121. data/spec/package_spec.rb +61 -0
  122. data/spec/packager_spec.rb +213 -0
  123. data/spec/pipeline_spec.rb +259 -0
  124. data/spec/spec_helper.rb +60 -0
  125. data/spec/splitter_spec.rb +120 -0
  126. data/spec/storage/base_spec.rb +166 -0
  127. data/spec/storage/cloudfiles_spec.rb +254 -0
  128. data/spec/storage/cycler_spec.rb +247 -0
  129. data/spec/storage/dropbox_spec.rb +480 -0
  130. data/spec/storage/ftp_spec.rb +271 -0
  131. data/spec/storage/local_spec.rb +259 -0
  132. data/spec/storage/ninefold_spec.rb +343 -0
  133. data/spec/storage/rsync_spec.rb +362 -0
  134. data/spec/storage/s3_spec.rb +245 -0
  135. data/spec/storage/scp_spec.rb +233 -0
  136. data/spec/storage/sftp_spec.rb +244 -0
  137. data/spec/syncer/base_spec.rb +109 -0
  138. data/spec/syncer/cloud/base_spec.rb +515 -0
  139. data/spec/syncer/cloud/cloud_files_spec.rb +181 -0
  140. data/spec/syncer/cloud/s3_spec.rb +174 -0
  141. data/spec/syncer/rsync/base_spec.rb +98 -0
  142. data/spec/syncer/rsync/local_spec.rb +149 -0
  143. data/spec/syncer/rsync/pull_spec.rb +98 -0
  144. data/spec/syncer/rsync/push_spec.rb +333 -0
  145. data/spec/version_spec.rb +21 -0
  146. data/templates/cli/utility/archive +25 -0
  147. data/templates/cli/utility/compressor/bzip2 +4 -0
  148. data/templates/cli/utility/compressor/custom +11 -0
  149. data/templates/cli/utility/compressor/gzip +4 -0
  150. data/templates/cli/utility/compressor/lzma +10 -0
  151. data/templates/cli/utility/compressor/pbzip2 +10 -0
  152. data/templates/cli/utility/config +32 -0
  153. data/templates/cli/utility/database/mongodb +18 -0
  154. data/templates/cli/utility/database/mysql +21 -0
  155. data/templates/cli/utility/database/postgresql +17 -0
  156. data/templates/cli/utility/database/redis +16 -0
  157. data/templates/cli/utility/database/riak +11 -0
  158. data/templates/cli/utility/encryptor/gpg +27 -0
  159. data/templates/cli/utility/encryptor/openssl +9 -0
  160. data/templates/cli/utility/model.erb +23 -0
  161. data/templates/cli/utility/notifier/campfire +12 -0
  162. data/templates/cli/utility/notifier/hipchat +15 -0
  163. data/templates/cli/utility/notifier/mail +22 -0
  164. data/templates/cli/utility/notifier/prowl +11 -0
  165. data/templates/cli/utility/notifier/pushover +11 -0
  166. data/templates/cli/utility/notifier/twitter +13 -0
  167. data/templates/cli/utility/splitter +7 -0
  168. data/templates/cli/utility/storage/cloud_files +22 -0
  169. data/templates/cli/utility/storage/dropbox +20 -0
  170. data/templates/cli/utility/storage/ftp +12 -0
  171. data/templates/cli/utility/storage/local +7 -0
  172. data/templates/cli/utility/storage/ninefold +9 -0
  173. data/templates/cli/utility/storage/rsync +11 -0
  174. data/templates/cli/utility/storage/s3 +19 -0
  175. data/templates/cli/utility/storage/scp +11 -0
  176. data/templates/cli/utility/storage/sftp +11 -0
  177. data/templates/cli/utility/syncer/cloud_files +46 -0
  178. data/templates/cli/utility/syncer/rsync_local +12 -0
  179. data/templates/cli/utility/syncer/rsync_pull +17 -0
  180. data/templates/cli/utility/syncer/rsync_push +17 -0
  181. data/templates/cli/utility/syncer/s3 +43 -0
  182. data/templates/general/links +11 -0
  183. data/templates/general/version.erb +2 -0
  184. data/templates/notifier/mail/failure.erb +9 -0
  185. data/templates/notifier/mail/success.erb +7 -0
  186. data/templates/notifier/mail/warning.erb +9 -0
  187. data/templates/storage/dropbox/authorization_url.erb +6 -0
  188. data/templates/storage/dropbox/authorized.erb +4 -0
  189. data/templates/storage/dropbox/cache_file_written.erb +10 -0
  190. metadata +277 -0
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ class Version
5
+
6
+ ##
7
+ # Change the MAJOR, MINOR and PATCH constants below
8
+ # to adjust the version of the Backup gem
9
+ #
10
+ # MAJOR:
11
+ # Defines the major version
12
+ # MINOR:
13
+ # Defines the minor version
14
+ # PATCH:
15
+ # Defines the patch version
16
+ MAJOR, MINOR, PATCH = 3, 0, 27
17
+
18
+ ##
19
+ # Returns the major version ( big release based off of multiple minor releases )
20
+ def self.major
21
+ MAJOR
22
+ end
23
+
24
+ ##
25
+ # Returns the minor version ( small release based off of multiple patches )
26
+ def self.minor
27
+ MINOR
28
+ end
29
+
30
+ ##
31
+ # Returns the patch version ( updates, features and (crucial) bug fixes )
32
+ def self.patch
33
+ PATCH
34
+ end
35
+
36
+ ##
37
+ # Returns the current version of the Backup gem ( qualified for the gemspec )
38
+ def self.current
39
+ "#{major}.#{minor}.#{patch}"
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,6 @@
1
+ backups/config.yml
2
+ backups/data
3
+ backups/log
4
+ backups/.cache
5
+ backups/.tmp
6
+ tmp/
data/spec-live/README ADDED
@@ -0,0 +1,7 @@
1
+ == spec-live ==
2
+
3
+ This folder contains "Live" specs which test various features against
4
+ the actual filesystem and/or real storage service accounts.
5
+
6
+ These are only intended to be used by developers.
7
+ Use at your own risk :)
@@ -0,0 +1,83 @@
1
+ ##
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 ...`.
8
+
9
+ Backup::Storage::Local.defaults do |storage|
10
+ storage.path = SpecLive::TMP_PATH
11
+ storage.keep = 2
12
+ end
13
+
14
+ # SSH operations can be tested against 'localhost'
15
+ # To do this, in the config.yml file:
16
+ # - set username/password for your current user
17
+ # - set ip to 'localhost'
18
+ # Although optional, it's recommended you set the 'path'
19
+ # to the same path as Backup::SpecLive::TMP_PATH
20
+ # i.e. '/absolute/path/to/spec-live/tmp'
21
+ # This way, cleaning the "remote path" can be skipped.
22
+ Backup::Storage::SCP.defaults do |storage|
23
+ opts = SpecLive::CONFIG['storage']['scp']
24
+
25
+ storage.username = opts['username']
26
+ storage.password = opts['password']
27
+ storage.ip = opts['ip']
28
+ storage.port = opts['port']
29
+ storage.path = opts['path']
30
+ storage.keep = 2
31
+ end
32
+
33
+ Backup::Storage::Dropbox.defaults do |storage|
34
+ opts = SpecLive::CONFIG['storage']['dropbox']
35
+
36
+ storage.api_key = opts['api_key']
37
+ storage.api_secret = opts['api_secret']
38
+ storage.access_type = opts['access_type']
39
+ storage.path = opts['path']
40
+ storage.keep = 2
41
+ end
42
+
43
+ Backup::Notifier::Mail.defaults do |notifier|
44
+ opts = SpecLive::CONFIG['notifier']['mail']
45
+
46
+ notifier.on_success = true
47
+ notifier.on_warning = true
48
+ notifier.on_failure = true
49
+
50
+ notifier.delivery_method = opts['delivery_method']
51
+ notifier.from = opts['from']
52
+ notifier.to = opts['to']
53
+ notifier.address = opts['address']
54
+ notifier.port = opts['port'] || 587
55
+ notifier.domain = opts['domain']
56
+ notifier.user_name = opts['user_name']
57
+ notifier.password = opts['password']
58
+ notifier.authentication = opts['authentication'] || 'plain'
59
+ notifier.enable_starttls_auto = opts['enable_starttls_auto'] || true
60
+ notifier.sendmail = opts['sendmail']
61
+ notifier.sendmail_args = opts['sendmail_args']
62
+ notifier.mail_folder = SpecLive::TMP_PATH
63
+ end
64
+
65
+ Backup::Syncer::Cloud::S3.defaults do |s3|
66
+ opts = SpecLive::CONFIG['syncer']['cloud']['s3']
67
+
68
+ s3.access_key_id = opts['access_key_id']
69
+ s3.secret_access_key = opts['secret_access_key']
70
+ s3.bucket = opts['bucket']
71
+ s3.region = opts['region']
72
+ s3.mirror = true
73
+ end
74
+
75
+ Backup::Encryptor::GPG.defaults do |enc|
76
+ enc.gpg_homedir = File.join(SpecLive::TMP_PATH, 'gpg_home_tmp')
77
+ end
78
+
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'))
83
+ end
@@ -0,0 +1,46 @@
1
+ ##
2
+ # config.yml template
3
+ # for usage, see:
4
+ # spec-live/spec_helper.rb
5
+ # spec-live/backups/config.rb
6
+ ##
7
+ ---
8
+ storage:
9
+ scp:
10
+ specs_enabled: false
11
+ username: <current user name>
12
+ password: <password>
13
+ ip: localhost
14
+ port: 22
15
+ path: /absolute/path/to/spec-live/tmp
16
+ dropbox:
17
+ specs_enabled: false
18
+ api_key: <your key>
19
+ api_secret: <your secret>
20
+ path:
21
+ timeout:
22
+ notifier:
23
+ mail:
24
+ specs_enabled: false
25
+ delivery_method: smtp
26
+ from: <from email>
27
+ to: <to email>
28
+ address: smtp.gmail.com
29
+ port: 587
30
+ user_name: <user name>
31
+ password: <password>
32
+ authentication: plain
33
+ enable_starttls_auto: true
34
+ sendmail:
35
+ sendmail_args:
36
+ syncer:
37
+ cloud:
38
+ s3:
39
+ specs_enabled: false
40
+ access_key_id:
41
+ secret_access_key:
42
+ bucket:
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,30 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path('../../spec_helper.rb', __FILE__)
4
+
5
+ describe 'Compressor::Custom' do
6
+
7
+ def archive_file_for(model)
8
+ File.join(
9
+ Backup::SpecLive::TMP_PATH,
10
+ "#{model.trigger}", model.time, "#{model.trigger}.tar"
11
+ )
12
+ end
13
+
14
+ def archive_contents_for(model)
15
+ archive_file = archive_file_for(model)
16
+ %x{ tar -tvf #{archive_file} }
17
+ end
18
+
19
+ it 'should compress an archive' do
20
+ model = h_set_trigger('compressor_custom_archive_local')
21
+ model.perform!
22
+ archive_file = archive_file_for(model)
23
+ File.exist?(archive_file).should be_true
24
+ archive_contents_for(model).should match(
25
+ /compressor_custom_archive_local\/archives\/test_archive\.tar\.foo/
26
+ )
27
+ File.stat(archive_file).size.should be > 0
28
+ end
29
+
30
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path('../../spec_helper.rb', __FILE__)
4
+
5
+ describe 'Compressor::Gzip' do
6
+
7
+ def archive_file_for(model)
8
+ File.join(
9
+ Backup::SpecLive::TMP_PATH,
10
+ "#{model.trigger}", model.time, "#{model.trigger}.tar"
11
+ )
12
+ end
13
+
14
+ def archive_contents_for(model)
15
+ archive_file = archive_file_for(model)
16
+ %x{ tar -tvf #{archive_file} }
17
+ end
18
+
19
+ it 'should compress an archive' do
20
+ model = h_set_trigger('compressor_gzip_archive_local')
21
+ model.perform!
22
+ archive_file = archive_file_for(model)
23
+ File.exist?(archive_file).should be_true
24
+ archive_contents_for(model).should match(
25
+ /compressor_gzip_archive_local\/archives\/test_archive\.tar\.gz/
26
+ )
27
+ File.stat(archive_file).size.should be > 0
28
+ end
29
+
30
+ 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