backup 2.4.5.1 → 3.0.0.build.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. data/.gitignore +2 -0
  2. data/.infinity_test +7 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +17 -0
  5. data/Gemfile.lock +88 -0
  6. data/LICENSE.md +24 -0
  7. data/README.md +189 -75
  8. data/backup.gemspec +41 -0
  9. data/bin/backup +161 -90
  10. data/lib/backup.rb +133 -117
  11. data/lib/backup/archive.rb +54 -0
  12. data/lib/backup/cli.rb +50 -0
  13. data/lib/backup/compressor/base.rb +17 -0
  14. data/lib/backup/compressor/gzip.rb +61 -0
  15. data/lib/backup/configuration/base.rb +7 -67
  16. data/lib/backup/configuration/compressor/base.rb +10 -0
  17. data/lib/backup/configuration/compressor/gzip.rb +23 -0
  18. data/lib/backup/configuration/database/base.rb +18 -0
  19. data/lib/backup/configuration/database/mongodb.rb +37 -0
  20. data/lib/backup/configuration/database/mysql.rb +37 -0
  21. data/lib/backup/configuration/database/postgresql.rb +37 -0
  22. data/lib/backup/configuration/database/redis.rb +35 -0
  23. data/lib/backup/configuration/encryptor/base.rb +10 -0
  24. data/lib/backup/configuration/encryptor/gpg.rb +17 -0
  25. data/lib/backup/configuration/encryptor/open_ssl.rb +26 -0
  26. data/lib/backup/configuration/helpers.rb +47 -17
  27. data/lib/backup/configuration/notifier/base.rb +39 -0
  28. data/lib/backup/configuration/notifier/mail.rb +52 -0
  29. data/lib/backup/configuration/storage/base.rb +18 -0
  30. data/lib/backup/configuration/storage/cloudfiles.rb +21 -0
  31. data/lib/backup/configuration/storage/dropbox.rb +25 -0
  32. data/lib/backup/configuration/storage/ftp.rb +25 -0
  33. data/lib/backup/configuration/storage/rsync.rb +25 -0
  34. data/lib/backup/configuration/storage/s3.rb +25 -0
  35. data/lib/backup/configuration/storage/scp.rb +25 -0
  36. data/lib/backup/configuration/storage/sftp.rb +25 -0
  37. data/lib/backup/database/base.rb +33 -0
  38. data/lib/backup/database/mongodb.rb +137 -0
  39. data/lib/backup/database/mysql.rb +104 -0
  40. data/lib/backup/database/postgresql.rb +111 -0
  41. data/lib/backup/database/redis.rb +105 -0
  42. data/lib/backup/encryptor/base.rb +17 -0
  43. data/lib/backup/encryptor/gpg.rb +78 -0
  44. data/lib/backup/encryptor/open_ssl.rb +67 -0
  45. data/lib/backup/finder.rb +39 -0
  46. data/lib/backup/logger.rb +80 -0
  47. data/lib/backup/model.rb +249 -0
  48. data/lib/backup/notifier/base.rb +29 -0
  49. data/lib/backup/notifier/binder.rb +32 -0
  50. data/lib/backup/notifier/mail.rb +141 -0
  51. data/lib/backup/notifier/templates/notify_failure.erb +31 -0
  52. data/lib/backup/notifier/templates/notify_success.erb +16 -0
  53. data/lib/backup/storage/base.rb +60 -3
  54. data/lib/backup/storage/cloudfiles.rb +85 -6
  55. data/lib/backup/storage/dropbox.rb +74 -4
  56. data/lib/backup/storage/ftp.rb +103 -27
  57. data/lib/backup/storage/object.rb +45 -0
  58. data/lib/backup/storage/rsync.rb +100 -0
  59. data/lib/backup/storage/s3.rb +100 -7
  60. data/lib/backup/storage/scp.rb +94 -19
  61. data/lib/backup/storage/sftp.rb +94 -19
  62. data/lib/backup/version.rb +70 -1
  63. data/lib/templates/archive +4 -0
  64. data/lib/templates/compressor/gzip +4 -0
  65. data/lib/templates/database/mongodb +10 -0
  66. data/lib/templates/database/mysql +11 -0
  67. data/lib/templates/database/postgresql +11 -0
  68. data/lib/templates/database/redis +10 -0
  69. data/lib/templates/encryptor/gpg +9 -0
  70. data/lib/templates/encryptor/openssl +5 -0
  71. data/lib/templates/notifier/mail +14 -0
  72. data/lib/templates/readme +15 -0
  73. data/lib/templates/storage/cloudfiles +7 -0
  74. data/lib/templates/storage/dropbox +8 -0
  75. data/lib/templates/storage/ftp +8 -0
  76. data/lib/templates/storage/rsync +7 -0
  77. data/lib/templates/storage/s3 +8 -0
  78. data/lib/templates/storage/scp +8 -0
  79. data/lib/templates/storage/sftp +8 -0
  80. data/spec/archive_spec.rb +53 -0
  81. data/spec/backup_spec.rb +11 -0
  82. data/spec/compressor/gzip_spec.rb +59 -0
  83. data/spec/configuration/base_spec.rb +35 -0
  84. data/spec/configuration/compressor/gzip_spec.rb +28 -0
  85. data/spec/configuration/database/base_spec.rb +16 -0
  86. data/spec/configuration/database/mongodb_spec.rb +30 -0
  87. data/spec/configuration/database/mysql_spec.rb +32 -0
  88. data/spec/configuration/database/postgresql_spec.rb +32 -0
  89. data/spec/configuration/database/redis_spec.rb +30 -0
  90. data/spec/configuration/encryptor/gpg_spec.rb +25 -0
  91. data/spec/configuration/encryptor/open_ssl_spec.rb +31 -0
  92. data/spec/configuration/notifier/mail_spec.rb +32 -0
  93. data/spec/configuration/storage/cloudfiles_spec.rb +34 -0
  94. data/spec/configuration/storage/dropbox_spec.rb +40 -0
  95. data/spec/configuration/storage/ftp_spec.rb +40 -0
  96. data/spec/configuration/storage/rsync_spec.rb +37 -0
  97. data/spec/configuration/storage/s3_spec.rb +37 -0
  98. data/spec/configuration/storage/scp_spec.rb +40 -0
  99. data/spec/configuration/storage/sftp_spec.rb +40 -0
  100. data/spec/database/base_spec.rb +30 -0
  101. data/spec/database/mongodb_spec.rb +144 -0
  102. data/spec/database/mysql_spec.rb +150 -0
  103. data/spec/database/postgresql_spec.rb +164 -0
  104. data/spec/database/redis_spec.rb +122 -0
  105. data/spec/encryptor/gpg_spec.rb +57 -0
  106. data/spec/encryptor/open_ssl_spec.rb +102 -0
  107. data/spec/logger_spec.rb +37 -0
  108. data/spec/model_spec.rb +236 -0
  109. data/spec/notifier/mail_spec.rb +97 -0
  110. data/spec/spec_helper.rb +21 -0
  111. data/spec/storage/base_spec.rb +33 -0
  112. data/spec/storage/cloudfiles_spec.rb +102 -0
  113. data/spec/storage/dropbox_spec.rb +89 -0
  114. data/spec/storage/ftp_spec.rb +133 -0
  115. data/spec/storage/object_spec.rb +74 -0
  116. data/spec/storage/rsync_spec.rb +115 -0
  117. data/spec/storage/s3_spec.rb +110 -0
  118. data/spec/storage/scp_spec.rb +129 -0
  119. data/spec/storage/sftp_spec.rb +125 -0
  120. data/spec/version_spec.rb +32 -0
  121. metadata +139 -123
  122. data/CHANGELOG +0 -131
  123. data/LICENSE +0 -20
  124. data/generators/backup/backup_generator.rb +0 -69
  125. data/generators/backup/templates/backup.rake +0 -56
  126. data/generators/backup/templates/backup.rb +0 -253
  127. data/generators/backup/templates/create_backup_tables.rb +0 -18
  128. data/generators/backup_update/backup_update_generator.rb +0 -50
  129. data/generators/backup_update/templates/migrations/update_backup_tables.rb +0 -27
  130. data/lib/backup/adapters/archive.rb +0 -34
  131. data/lib/backup/adapters/base.rb +0 -167
  132. data/lib/backup/adapters/custom.rb +0 -41
  133. data/lib/backup/adapters/mongo_db.rb +0 -139
  134. data/lib/backup/adapters/mysql.rb +0 -60
  135. data/lib/backup/adapters/postgresql.rb +0 -60
  136. data/lib/backup/adapters/sqlite.rb +0 -25
  137. data/lib/backup/command_helper.rb +0 -14
  138. data/lib/backup/configuration/adapter.rb +0 -21
  139. data/lib/backup/configuration/adapter_options.rb +0 -8
  140. data/lib/backup/configuration/attributes.rb +0 -19
  141. data/lib/backup/configuration/mail.rb +0 -20
  142. data/lib/backup/configuration/smtp.rb +0 -8
  143. data/lib/backup/configuration/storage.rb +0 -8
  144. data/lib/backup/connection/cloudfiles.rb +0 -75
  145. data/lib/backup/connection/dropbox.rb +0 -63
  146. data/lib/backup/connection/s3.rb +0 -88
  147. data/lib/backup/core_ext/object.rb +0 -5
  148. data/lib/backup/environment/base.rb +0 -12
  149. data/lib/backup/environment/rails_configuration.rb +0 -15
  150. data/lib/backup/environment/unix_configuration.rb +0 -109
  151. data/lib/backup/mail/base.rb +0 -97
  152. data/lib/backup/mail/mail.txt +0 -7
  153. data/lib/backup/record/base.rb +0 -65
  154. data/lib/backup/record/cloudfiles.rb +0 -28
  155. data/lib/backup/record/dropbox.rb +0 -27
  156. data/lib/backup/record/ftp.rb +0 -39
  157. data/lib/backup/record/local.rb +0 -26
  158. data/lib/backup/record/s3.rb +0 -25
  159. data/lib/backup/record/scp.rb +0 -33
  160. data/lib/backup/record/sftp.rb +0 -38
  161. data/lib/backup/storage/local.rb +0 -22
  162. data/lib/generators/backup/USAGE +0 -10
  163. data/lib/generators/backup/backup_generator.rb +0 -47
  164. data/lib/generators/backup/templates/backup.rake +0 -56
  165. data/lib/generators/backup/templates/backup.rb +0 -236
  166. data/lib/generators/backup/templates/create_backup_tables.rb +0 -18
  167. data/setup/backup.rb +0 -257
  168. data/setup/backup.sqlite3 +0 -0
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module Configuration
5
+ module Encryptor
6
+ class Base < Backup::Configuration::Base
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module Configuration
5
+ module Encryptor
6
+ class GPG < Base
7
+ class << self
8
+
9
+ ##
10
+ # The GPG Public key that'll be used to encrypt the backup
11
+ attr_accessor :key
12
+
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module Configuration
5
+ module Encryptor
6
+ class OpenSSL < Base
7
+ class << self
8
+
9
+ ##
10
+ # The password that'll be used to encrypt the backup. This
11
+ # password will be required to decrypt the backup later on.
12
+ attr_accessor :password
13
+
14
+ ##
15
+ # Determines whether the 'base64' should be used or not
16
+ attr_accessor :base64
17
+
18
+ ##
19
+ # Determines whether the 'salt' flag should be used
20
+ attr_accessor :salt
21
+
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,24 +1,54 @@
1
+ # encoding: utf-8
2
+
1
3
  module Backup
2
4
  module Configuration
3
5
  module Helpers
4
-
5
- # A helper method for the config/backup.rb configuration file
6
- # Expects a trigger in argument one (STRING)
7
- # Expects a block of settings
8
- def backup(trigger, &block)
9
- backup = Backup::Configuration::Base.new(trigger)
10
- backup.instance_eval &block
11
- @backup_procedures ||= Array.new
12
- @backup_procedures << backup
6
+
7
+ ##
8
+ # Finds all the object's getter methods and checks the global
9
+ # configuration for these methods, if they respond then they will
10
+ # assign the object's attribute(s) to that particular global configuration's attribute
11
+ def load_defaults!
12
+ c = self.class.name.split('::')
13
+ configuration = Backup::Configuration.const_get(c[1]).const_get(c[2])
14
+
15
+ getter_methods.each do |attribute|
16
+ if configuration.respond_to?(attribute)
17
+ unless configuration.send(attribute).nil?
18
+ self.send("#{attribute}=", configuration.send(attribute))
19
+ end
20
+ end
21
+ end
13
22
  end
14
-
15
- # A helper method for the config/mail.rb configuration file
16
- # Takes a block containing the mail options
17
- def notifier_settings(&block)
18
- @mail_configuration = Backup::Configuration::Mail.new
19
- @mail_configuration.instance_eval &block
23
+
24
+ ##
25
+ # Clears all the defaults that may have been set by the user
26
+ def clear_defaults!
27
+ setter_methods.each do |method|
28
+ self.send(method, nil)
29
+ end
20
30
  end
21
-
31
+
32
+ ##
33
+ # Returns an array of the setter methods (as String)
34
+ def setter_methods
35
+ methods.map do |method|
36
+ method = method.to_s
37
+ method if method =~ /^\w(\w|\d|\_)+\=$/ and method != 'taguri='
38
+ end.compact
39
+ end
40
+
41
+ ##
42
+ # Returns an array of getter methods (as Array)
43
+ def getter_methods
44
+ methods.map do |method|
45
+ method = method.to_s
46
+ if method =~ /^\w(\w|\d|\_)+\=$/ and method != 'taguri='
47
+ method.sub('=','')
48
+ end
49
+ end.compact
50
+ end
51
+
22
52
  end
23
53
  end
24
- end
54
+ end
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module Configuration
5
+ module Notifier
6
+ class Base < Backup::Configuration::Base
7
+ class << self
8
+
9
+ ##
10
+ # When set to true, the user will be notified by email
11
+ # when a backup process ends without raising any exceptions
12
+ attr_writer :on_success
13
+
14
+ ##
15
+ # When set to true, the user will be notified by email
16
+ # when a backup process raises an exception before finishing
17
+ attr_writer :on_failure
18
+
19
+ end
20
+
21
+ ##
22
+ # When @on_success is nil it means it hasn't been defined
23
+ # and will then default to true
24
+ def self.on_success
25
+ return true if @on_success.nil?
26
+ @on_success
27
+ end
28
+
29
+ ##
30
+ # When @on_failure is nil it means it hasn't been defined
31
+ # and will then default to true
32
+ def self.on_failure
33
+ return true if @on_failure.nil?
34
+ @on_failure
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module Configuration
5
+ module Notifier
6
+ class Mail < Base
7
+ class << self
8
+
9
+ ##
10
+ # Sender and Receiver email addresses
11
+ # Examples:
12
+ # sender - my.email.address@gmail.com
13
+ # receiver - your.email.address@gmail.com
14
+ attr_accessor :from, :to
15
+
16
+ ##
17
+ # The address to use
18
+ # Example: smtp.gmail.com
19
+ attr_accessor :address
20
+
21
+ ##
22
+ # The port to connect to
23
+ # Example: 587
24
+ attr_accessor :port
25
+
26
+ ##
27
+ # Your domain (if applicable)
28
+ # Example: mydomain.com
29
+ attr_accessor :domain
30
+
31
+ ##
32
+ # Username and Password (sender email's credentials)
33
+ # Examples:
34
+ # user_name - meskyanichi
35
+ # password - my_secret_password
36
+ attr_accessor :user_name, :password
37
+
38
+ ##
39
+ # Authentication type
40
+ # Example: plain
41
+ attr_accessor :authentication
42
+
43
+ ##
44
+ # Automatically set TLS
45
+ # Example: true
46
+ attr_accessor :enable_starttls_auto
47
+
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module Configuration
5
+ module Storage
6
+ class Base < Backup::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
@@ -0,0 +1,21 @@
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
12
+
13
+ ##
14
+ # Rackspace Cloud Files container name and path
15
+ attr_accessor :container, :path
16
+
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,25 @@
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 user credentials
11
+ attr_accessor :email, :password
12
+
13
+ ##
14
+ # Dropbox API credentials
15
+ attr_accessor :api_key, :api_secret
16
+
17
+ ##
18
+ # Path to where the backups will be stored
19
+ attr_accessor :path
20
+
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
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
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
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
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
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
@@ -0,0 +1,25 @@
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
@@ -0,0 +1,25 @@
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
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module Database
5
+ class Base
6
+ include Backup::CLI
7
+ include Backup::Configuration::Helpers
8
+
9
+ ##
10
+ # Contains the path to where the database should be dumped
11
+ attr_accessor :dump_path
12
+
13
+ ##
14
+ # Allows the user to specify the path to a "dump" utility
15
+ # in case it cannot be auto-detected by Backup
16
+ attr_accessor :utility_path
17
+
18
+ ##
19
+ # Defines the @dump_path and ensures it exists by creating it
20
+ def prepare!
21
+ @dump_path = File.join(TMP_PATH, TRIGGER, self.class.name.split('::').last)
22
+ mkdir(dump_path)
23
+ end
24
+
25
+ ##
26
+ # Logs a message to the console and log file to inform
27
+ # the client that Backup is dumping the database
28
+ def log!
29
+ Logger.message("#{ self.class } started dumping and archiving \"#{ name }\".")
30
+ end
31
+ end
32
+ end
33
+ end