backup 3.0.23 → 3.0.24

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.
Files changed (197) hide show
  1. data/Gemfile.lock +42 -45
  2. data/Guardfile +7 -4
  3. data/README.md +10 -7
  4. data/backup.gemspec +2 -2
  5. data/lib/backup.rb +27 -97
  6. data/lib/backup/archive.rb +14 -6
  7. data/lib/backup/cli/helpers.rb +52 -49
  8. data/lib/backup/cli/utility.rb +9 -1
  9. data/lib/backup/compressor/base.rb +10 -4
  10. data/lib/backup/compressor/bzip2.rb +22 -26
  11. data/lib/backup/compressor/custom.rb +53 -0
  12. data/lib/backup/compressor/gzip.rb +22 -23
  13. data/lib/backup/compressor/lzma.rb +15 -13
  14. data/lib/backup/compressor/pbzip2.rb +20 -17
  15. data/lib/backup/config.rb +6 -3
  16. data/lib/backup/configuration.rb +33 -0
  17. data/lib/backup/configuration/helpers.rb +114 -28
  18. data/lib/backup/configuration/store.rb +24 -0
  19. data/lib/backup/database/base.rb +0 -6
  20. data/lib/backup/database/mongodb.rb +27 -11
  21. data/lib/backup/database/mysql.rb +19 -14
  22. data/lib/backup/database/postgresql.rb +16 -11
  23. data/lib/backup/database/redis.rb +7 -11
  24. data/lib/backup/database/riak.rb +3 -6
  25. data/lib/backup/dependency.rb +5 -11
  26. data/lib/backup/model.rb +14 -5
  27. data/lib/backup/notifier/campfire.rb +3 -16
  28. data/lib/backup/notifier/hipchat.rb +1 -7
  29. data/lib/backup/notifier/mail.rb +1 -1
  30. data/lib/backup/packager.rb +29 -19
  31. data/lib/backup/pipeline.rb +110 -0
  32. data/lib/backup/storage/dropbox.rb +4 -7
  33. data/lib/backup/syncer/base.rb +8 -4
  34. data/lib/backup/syncer/cloud/base.rb +247 -0
  35. data/lib/backup/syncer/cloud/cloud_files.rb +78 -0
  36. data/lib/backup/syncer/cloud/s3.rb +68 -0
  37. data/lib/backup/syncer/rsync/base.rb +1 -4
  38. data/lib/backup/syncer/rsync/local.rb +9 -5
  39. data/lib/backup/syncer/rsync/pull.rb +1 -1
  40. data/lib/backup/syncer/rsync/push.rb +10 -5
  41. data/lib/backup/version.rb +1 -1
  42. data/spec-live/.gitignore +6 -0
  43. data/spec-live/README +7 -0
  44. data/spec-live/backups/config.rb +153 -0
  45. data/spec-live/backups/config.yml.template +43 -0
  46. data/spec-live/compressor/custom_spec.rb +30 -0
  47. data/spec-live/compressor/gzip_spec.rb +30 -0
  48. data/spec-live/notifier/mail_spec.rb +85 -0
  49. data/spec-live/spec_helper.rb +85 -0
  50. data/spec-live/storage/dropbox_spec.rb +151 -0
  51. data/spec-live/storage/local_spec.rb +83 -0
  52. data/spec-live/storage/scp_spec.rb +193 -0
  53. data/spec-live/syncer/cloud/s3_spec.rb +124 -0
  54. data/spec/archive_spec.rb +86 -31
  55. data/spec/cleaner_spec.rb +8 -0
  56. data/spec/cli/helpers_spec.rb +200 -75
  57. data/spec/cli/utility_spec.rb +11 -3
  58. data/spec/compressor/base_spec.rb +31 -10
  59. data/spec/compressor/bzip2_spec.rb +212 -57
  60. data/spec/compressor/custom_spec.rb +106 -0
  61. data/spec/compressor/gzip_spec.rb +212 -57
  62. data/spec/compressor/lzma_spec.rb +75 -35
  63. data/spec/compressor/pbzip2_spec.rb +93 -52
  64. data/spec/configuration/helpers_spec.rb +406 -0
  65. data/spec/configuration/store_spec.rb +39 -0
  66. data/spec/configuration_spec.rb +62 -0
  67. data/spec/database/base_spec.rb +19 -10
  68. data/spec/database/mongodb_spec.rb +195 -70
  69. data/spec/database/mysql_spec.rb +183 -64
  70. data/spec/database/postgresql_spec.rb +167 -53
  71. data/spec/database/redis_spec.rb +121 -46
  72. data/spec/database/riak_spec.rb +96 -27
  73. data/spec/dependency_spec.rb +2 -0
  74. data/spec/encryptor/base_spec.rb +10 -0
  75. data/spec/encryptor/gpg_spec.rb +29 -13
  76. data/spec/encryptor/open_ssl_spec.rb +40 -21
  77. data/spec/logger_spec.rb +4 -0
  78. data/spec/model_spec.rb +19 -2
  79. data/spec/notifier/base_spec.rb +32 -17
  80. data/spec/notifier/campfire_spec.rb +63 -45
  81. data/spec/notifier/hipchat_spec.rb +79 -56
  82. data/spec/notifier/mail_spec.rb +82 -46
  83. data/spec/notifier/prowl_spec.rb +53 -32
  84. data/spec/notifier/twitter_spec.rb +62 -41
  85. data/spec/packager_spec.rb +95 -36
  86. data/spec/pipeline_spec.rb +259 -0
  87. data/spec/spec_helper.rb +6 -5
  88. data/spec/storage/base_spec.rb +61 -41
  89. data/spec/storage/cloudfiles_spec.rb +69 -45
  90. data/spec/storage/dropbox_spec.rb +158 -36
  91. data/spec/storage/ftp_spec.rb +69 -45
  92. data/spec/storage/local_spec.rb +47 -23
  93. data/spec/storage/ninefold_spec.rb +55 -31
  94. data/spec/storage/rsync_spec.rb +67 -50
  95. data/spec/storage/s3_spec.rb +65 -41
  96. data/spec/storage/scp_spec.rb +65 -41
  97. data/spec/storage/sftp_spec.rb +65 -41
  98. data/spec/syncer/base_spec.rb +91 -4
  99. data/spec/syncer/cloud/base_spec.rb +511 -0
  100. data/spec/syncer/cloud/cloud_files_spec.rb +181 -0
  101. data/spec/syncer/cloud/s3_spec.rb +174 -0
  102. data/spec/syncer/rsync/base_spec.rb +46 -66
  103. data/spec/syncer/rsync/local_spec.rb +55 -26
  104. data/spec/syncer/rsync/pull_spec.rb +15 -4
  105. data/spec/syncer/rsync/push_spec.rb +59 -52
  106. data/templates/cli/utility/compressor/bzip2 +1 -4
  107. data/templates/cli/utility/compressor/custom +11 -0
  108. data/templates/cli/utility/compressor/gzip +1 -4
  109. data/templates/cli/utility/compressor/lzma +3 -0
  110. data/templates/cli/utility/compressor/pbzip2 +3 -0
  111. data/templates/cli/utility/database/mysql +4 -1
  112. data/templates/cli/utility/syncer/cloud_files +17 -19
  113. data/templates/cli/utility/syncer/s3 +18 -20
  114. metadata +38 -92
  115. data/lib/backup/configuration/base.rb +0 -15
  116. data/lib/backup/configuration/compressor/base.rb +0 -9
  117. data/lib/backup/configuration/compressor/bzip2.rb +0 -23
  118. data/lib/backup/configuration/compressor/gzip.rb +0 -23
  119. data/lib/backup/configuration/compressor/lzma.rb +0 -23
  120. data/lib/backup/configuration/compressor/pbzip2.rb +0 -28
  121. data/lib/backup/configuration/database/base.rb +0 -19
  122. data/lib/backup/configuration/database/mongodb.rb +0 -49
  123. data/lib/backup/configuration/database/mysql.rb +0 -42
  124. data/lib/backup/configuration/database/postgresql.rb +0 -41
  125. data/lib/backup/configuration/database/redis.rb +0 -39
  126. data/lib/backup/configuration/database/riak.rb +0 -29
  127. data/lib/backup/configuration/encryptor/base.rb +0 -9
  128. data/lib/backup/configuration/encryptor/gpg.rb +0 -17
  129. data/lib/backup/configuration/encryptor/open_ssl.rb +0 -32
  130. data/lib/backup/configuration/notifier/base.rb +0 -28
  131. data/lib/backup/configuration/notifier/campfire.rb +0 -25
  132. data/lib/backup/configuration/notifier/hipchat.rb +0 -41
  133. data/lib/backup/configuration/notifier/mail.rb +0 -112
  134. data/lib/backup/configuration/notifier/presently.rb +0 -25
  135. data/lib/backup/configuration/notifier/prowl.rb +0 -23
  136. data/lib/backup/configuration/notifier/twitter.rb +0 -21
  137. data/lib/backup/configuration/storage/base.rb +0 -18
  138. data/lib/backup/configuration/storage/cloudfiles.rb +0 -25
  139. data/lib/backup/configuration/storage/dropbox.rb +0 -58
  140. data/lib/backup/configuration/storage/ftp.rb +0 -29
  141. data/lib/backup/configuration/storage/local.rb +0 -17
  142. data/lib/backup/configuration/storage/ninefold.rb +0 -20
  143. data/lib/backup/configuration/storage/rsync.rb +0 -29
  144. data/lib/backup/configuration/storage/s3.rb +0 -25
  145. data/lib/backup/configuration/storage/scp.rb +0 -25
  146. data/lib/backup/configuration/storage/sftp.rb +0 -25
  147. data/lib/backup/configuration/syncer/base.rb +0 -10
  148. data/lib/backup/configuration/syncer/cloud.rb +0 -23
  149. data/lib/backup/configuration/syncer/cloud_files.rb +0 -30
  150. data/lib/backup/configuration/syncer/rsync/base.rb +0 -28
  151. data/lib/backup/configuration/syncer/rsync/local.rb +0 -11
  152. data/lib/backup/configuration/syncer/rsync/pull.rb +0 -11
  153. data/lib/backup/configuration/syncer/rsync/push.rb +0 -31
  154. data/lib/backup/configuration/syncer/s3.rb +0 -23
  155. data/lib/backup/notifier/presently.rb +0 -88
  156. data/lib/backup/syncer/cloud.rb +0 -187
  157. data/lib/backup/syncer/cloud_files.rb +0 -56
  158. data/lib/backup/syncer/s3.rb +0 -47
  159. data/spec/configuration/base_spec.rb +0 -35
  160. data/spec/configuration/compressor/bzip2_spec.rb +0 -29
  161. data/spec/configuration/compressor/gzip_spec.rb +0 -29
  162. data/spec/configuration/compressor/lzma_spec.rb +0 -29
  163. data/spec/configuration/compressor/pbzip2_spec.rb +0 -32
  164. data/spec/configuration/database/base_spec.rb +0 -17
  165. data/spec/configuration/database/mongodb_spec.rb +0 -56
  166. data/spec/configuration/database/mysql_spec.rb +0 -53
  167. data/spec/configuration/database/postgresql_spec.rb +0 -53
  168. data/spec/configuration/database/redis_spec.rb +0 -50
  169. data/spec/configuration/database/riak_spec.rb +0 -35
  170. data/spec/configuration/encryptor/gpg_spec.rb +0 -26
  171. data/spec/configuration/encryptor/open_ssl_spec.rb +0 -35
  172. data/spec/configuration/notifier/base_spec.rb +0 -32
  173. data/spec/configuration/notifier/campfire_spec.rb +0 -32
  174. data/spec/configuration/notifier/hipchat_spec.rb +0 -44
  175. data/spec/configuration/notifier/mail_spec.rb +0 -71
  176. data/spec/configuration/notifier/presently_spec.rb +0 -35
  177. data/spec/configuration/notifier/prowl_spec.rb +0 -29
  178. data/spec/configuration/notifier/twitter_spec.rb +0 -35
  179. data/spec/configuration/storage/cloudfiles_spec.rb +0 -41
  180. data/spec/configuration/storage/dropbox_spec.rb +0 -38
  181. data/spec/configuration/storage/ftp_spec.rb +0 -44
  182. data/spec/configuration/storage/local_spec.rb +0 -29
  183. data/spec/configuration/storage/ninefold_spec.rb +0 -32
  184. data/spec/configuration/storage/rsync_spec.rb +0 -41
  185. data/spec/configuration/storage/s3_spec.rb +0 -38
  186. data/spec/configuration/storage/scp_spec.rb +0 -41
  187. data/spec/configuration/storage/sftp_spec.rb +0 -41
  188. data/spec/configuration/syncer/cloud_files_spec.rb +0 -44
  189. data/spec/configuration/syncer/rsync/base_spec.rb +0 -33
  190. data/spec/configuration/syncer/rsync/local_spec.rb +0 -10
  191. data/spec/configuration/syncer/rsync/pull_spec.rb +0 -10
  192. data/spec/configuration/syncer/rsync/push_spec.rb +0 -43
  193. data/spec/configuration/syncer/s3_spec.rb +0 -38
  194. data/spec/notifier/presently_spec.rb +0 -181
  195. data/spec/syncer/cloud_files_spec.rb +0 -192
  196. data/spec/syncer/s3_spec.rb +0 -192
  197. data/templates/cli/utility/notifier/presently +0 -13
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Notifier
6
- class Presently < Base
7
- class << self
8
-
9
- ##
10
- # Presently subdomain
11
- attr_accessor :subdomain
12
-
13
- ##
14
- # Presently credentials
15
- attr_accessor :user_name, :password
16
-
17
- ##
18
- # Group id
19
- attr_accessor :group_id
20
-
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,23 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Notifier
6
- class Prowl < Base
7
- class << self
8
-
9
- ##
10
- # Application name
11
- # Tell something like your server name. Example: "Server1 Backup"
12
- attr_accessor :application
13
-
14
- ##
15
- # API-Key
16
- # Create a Prowl account and request an API key on prowlapp.com.
17
- attr_accessor :api_key
18
-
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,21 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Notifier
6
- class Twitter < Base
7
- class << self
8
-
9
- ##
10
- # Twitter consumer key credentials
11
- attr_accessor :consumer_key, :consumer_secret
12
-
13
- ##
14
- # OAuth credentials
15
- attr_accessor :oauth_token, :oauth_token_secret
16
-
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,18 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Storage
6
- class Base < Configuration::Base
7
- class << self
8
-
9
- ##
10
- # Sets the limit to how many backups to keep in the remote location.
11
- # If the limit exceeds it will remove the oldest backup to make room for the newest
12
- attr_accessor :keep
13
-
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Storage
6
- class CloudFiles < Base
7
- class << self
8
-
9
- ##
10
- # Rackspace Cloud Files Credentials
11
- attr_accessor :api_key, :username, :auth_url
12
-
13
- ##
14
- # Rackspace Service Net (Allows for LAN-based transfers to avoid charges and improve performance)
15
- attr_accessor :servicenet
16
-
17
- ##
18
- # Rackspace Cloud Files container name and path
19
- attr_accessor :container, :path
20
-
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,58 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Storage
6
- class Dropbox < Base
7
- class << self
8
-
9
- ##
10
- # Dropbox API credentials
11
- attr_accessor :api_key, :api_secret
12
-
13
- ##
14
- # Dropbox Access Type
15
- # Valid values are:
16
- # :app_folder (default)
17
- # :dropbox (full access)
18
- attr_accessor :access_type
19
-
20
- ##
21
- # Path to where the backups will be stored
22
- attr_accessor :path
23
-
24
-
25
- # DEPRECATED METHODS #############################################
26
-
27
- # Deprecated as of v3.0.21 - for move to official 'dropbox-sdk' gem (v1.1)
28
- attr_reader :timeout
29
- def timeout=(value)
30
- Logger.warn "[DEPRECATED] Backup::Configuration::Storage::Dropbox.timeout=\n" +
31
- " is deprecated and will be removed at some point."
32
- end
33
-
34
- def email
35
- Logger.warn "[DEPRECATED] Backup::Configuration::Storage::Dropbox.email\n" +
36
- " is deprecated and will be removed at some point."
37
- end
38
-
39
- def email=(value)
40
- Logger.warn "[DEPRECATED] Backup::Configuration::Storage::Dropbox.email=\n" +
41
- " is deprecated and will be removed at some point."
42
- end
43
-
44
- def password
45
- Logger.warn "[DEPRECATED] Backup::Configuration::Storage::Dropbox.password\n" +
46
- " is deprecated and will be removed at some point."
47
- end
48
-
49
- def password=(value)
50
- Logger.warn "[DEPRECATED] Backup::Configuration::Storage::Dropbox.password=\n" +
51
- " is deprecated and will be removed at some point."
52
- end
53
-
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Storage
6
- class FTP < Base
7
- class << self
8
-
9
- ##
10
- # Server credentials
11
- attr_accessor :username, :password
12
-
13
- ##
14
- # Server IP Address and FTP port
15
- attr_accessor :ip, :port
16
-
17
- ##
18
- # Path to store backups to
19
- attr_accessor :path
20
-
21
- ##
22
- # use passive mode?
23
- attr_accessor :passive_mode
24
-
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,17 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Storage
6
- class Local < Base
7
- class << self
8
-
9
- ##
10
- # Path to store backups to
11
- attr_accessor :path
12
-
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,20 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Storage
6
- class Ninefold < Base
7
- class << self
8
-
9
- ##
10
- # Ninefold Credentials
11
- attr_accessor :storage_token, :storage_secret
12
-
13
- ##
14
- # Ninefold path
15
- attr_accessor :path
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Storage
6
- class RSync < Base
7
- class << self
8
-
9
- ##
10
- # Server credentials
11
- attr_accessor :username, :password
12
-
13
- ##
14
- # Server IP Address and SSH port
15
- attr_accessor :ip, :port
16
-
17
- ##
18
- # Path to store backups to
19
- attr_accessor :path
20
-
21
- ##
22
- # Flag to use local backups
23
- attr_accessor :local
24
-
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Storage
6
- class S3 < Base
7
- class << self
8
-
9
- ##
10
- # Amazon Simple Storage Service (S3) Credentials
11
- attr_accessor :access_key_id, :secret_access_key
12
-
13
- ##
14
- # Amazon S3 bucket name and path
15
- attr_accessor :bucket, :path
16
-
17
- ##
18
- # Region of the specified S3 bucket
19
- attr_accessor :region
20
-
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Storage
6
- class SCP < Base
7
- class << self
8
-
9
- ##
10
- # Server credentials
11
- attr_accessor :username, :password
12
-
13
- ##
14
- # Server IP Address and SCP port
15
- attr_accessor :ip, :port
16
-
17
- ##
18
- # Path to store backups to
19
- attr_accessor :path
20
-
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Storage
6
- class SFTP < Base
7
- class << self
8
-
9
- ##
10
- # Server credentials
11
- attr_accessor :username, :password
12
-
13
- ##
14
- # Server IP Address and SFTP port
15
- attr_accessor :ip, :port
16
-
17
- ##
18
- # Path to store backups to
19
- attr_accessor :path
20
-
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,10 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Syncer
6
- class Base < Configuration::Base; end
7
- end
8
- end
9
- end
10
-
@@ -1,23 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Syncer
6
- class Cloud < Base
7
- class << self
8
- ##
9
- # Amazon S3 bucket name and path to sync to
10
- attr_accessor :bucket, :path
11
-
12
- ##
13
- # Directories to sync
14
- attr_accessor :directories
15
-
16
- ##
17
- # Flag to enable mirroring
18
- attr_accessor :mirror
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,30 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Syncer
6
- class CloudFiles < Cloud
7
- class << self
8
- ##
9
- # Rackspace CloudFiles Credentials
10
- attr_accessor :api_key, :username
11
-
12
- ##
13
- # Rackspace CloudFiles Container
14
- attr_accessor :container
15
-
16
- ##
17
- # Rackspace AuthURL allows you to connect to a different Rackspace datacenter
18
- # - https://auth.api.rackspacecloud.com (Default: US)
19
- # - https://lon.auth.api.rackspacecloud.com (UK)
20
- attr_accessor :auth_url
21
-
22
- ##
23
- # Improve performance and avoid data transfer costs by setting @servicenet to `true`
24
- # This only works if Backup runs on a Rackspace server
25
- attr_accessor :servicenet
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,28 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Backup
4
- module Configuration
5
- module Syncer
6
- module RSync
7
- class Base < Syncer::Base
8
- class << self
9
-
10
- ##
11
- # Path to store the synced files/directories to
12
- attr_accessor :path
13
-
14
- ##
15
- # Flag for mirroring the files/directories
16
- attr_accessor :mirror
17
-
18
- ##
19
- # Additional options for the rsync cli
20
- attr_accessor :additional_options
21
-
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
28
-