backup 3.11.0 → 4.0.0rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -4
  3. data/lib/backup.rb +1 -4
  4. data/lib/backup/archive.rb +1 -1
  5. data/lib/backup/cli.rb +51 -107
  6. data/lib/backup/compressor/base.rb +2 -2
  7. data/lib/backup/compressor/bzip2.rb +0 -11
  8. data/lib/backup/compressor/gzip.rb +0 -11
  9. data/lib/backup/config.rb +45 -123
  10. data/lib/backup/config/dsl.rb +102 -0
  11. data/lib/backup/{configuration → config}/helpers.rb +23 -14
  12. data/lib/backup/database/base.rb +2 -2
  13. data/lib/backup/database/mongodb.rb +0 -18
  14. data/lib/backup/database/mysql.rb +6 -75
  15. data/lib/backup/database/postgresql.rb +0 -12
  16. data/lib/backup/database/redis.rb +85 -47
  17. data/lib/backup/database/riak.rb +0 -19
  18. data/lib/backup/encryptor/base.rb +2 -2
  19. data/lib/backup/encryptor/gpg.rb +1 -12
  20. data/lib/backup/logger/fog_adapter.rb +1 -2
  21. data/lib/backup/model.rb +3 -24
  22. data/lib/backup/notifier/base.rb +2 -17
  23. data/lib/backup/notifier/http_post.rb +1 -1
  24. data/lib/backup/notifier/mail.rb +5 -47
  25. data/lib/backup/notifier/prowl.rb +1 -1
  26. data/lib/backup/notifier/pushover.rb +1 -1
  27. data/lib/backup/packager.rb +1 -1
  28. data/lib/backup/pipeline.rb +1 -1
  29. data/lib/backup/splitter.rb +1 -1
  30. data/lib/backup/storage/base.rb +2 -14
  31. data/lib/backup/storage/cloud_files.rb +1 -0
  32. data/lib/backup/storage/cycler.rb +33 -88
  33. data/lib/backup/storage/dropbox.rb +19 -12
  34. data/lib/backup/storage/ftp.rb +1 -0
  35. data/lib/backup/storage/local.rb +1 -0
  36. data/lib/backup/storage/ninefold.rb +1 -0
  37. data/lib/backup/storage/rsync.rb +7 -41
  38. data/lib/backup/storage/s3.rb +1 -0
  39. data/lib/backup/storage/scp.rb +1 -0
  40. data/lib/backup/storage/sftp.rb +1 -0
  41. data/lib/backup/syncer/base.rb +2 -2
  42. data/lib/backup/syncer/cloud/cloud_files.rb +0 -16
  43. data/lib/backup/syncer/cloud/s3.rb +0 -16
  44. data/lib/backup/syncer/rsync/local.rb +0 -5
  45. data/lib/backup/syncer/rsync/pull.rb +0 -21
  46. data/lib/backup/syncer/rsync/push.rb +0 -21
  47. data/lib/backup/utilities.rb +2 -22
  48. data/lib/backup/version.rb +1 -1
  49. data/templates/cli/archive +0 -3
  50. data/templates/cli/compressor/custom +0 -4
  51. data/templates/cli/config +39 -17
  52. data/templates/cli/{database → databases}/mongodb +0 -0
  53. data/templates/cli/{database → databases}/mysql +0 -0
  54. data/templates/cli/{database → databases}/postgresql +0 -0
  55. data/templates/cli/databases/redis +16 -0
  56. data/templates/cli/{database → databases}/riak +0 -0
  57. data/templates/cli/{model.erb → model} +8 -5
  58. data/templates/cli/{notifier → notifiers}/campfire +0 -0
  59. data/templates/cli/{notifier → notifiers}/hipchat +0 -0
  60. data/templates/cli/{notifier → notifiers}/http_post +0 -3
  61. data/templates/cli/{notifier → notifiers}/mail +1 -2
  62. data/templates/cli/notifiers/nagios +13 -0
  63. data/templates/cli/{notifier → notifiers}/prowl +0 -0
  64. data/templates/cli/{notifier → notifiers}/pushover +0 -0
  65. data/templates/cli/{notifier → notifiers}/twitter +0 -0
  66. data/templates/cli/{storage → storages}/cloud_files +0 -2
  67. data/templates/cli/storages/dropbox +19 -0
  68. data/templates/cli/{storage → storages}/ftp +0 -0
  69. data/templates/cli/{storage → storages}/local +0 -0
  70. data/templates/cli/{storage → storages}/ninefold +0 -0
  71. data/templates/cli/{storage → storages}/rsync +0 -2
  72. data/templates/cli/{storage → storages}/s3 +0 -2
  73. data/templates/cli/{storage → storages}/scp +0 -0
  74. data/templates/cli/{storage → storages}/sftp +0 -0
  75. data/templates/cli/{syncer → syncers}/cloud_files +0 -2
  76. data/templates/cli/{syncer → syncers}/rsync_local +0 -0
  77. data/templates/cli/{syncer → syncers}/rsync_pull +0 -2
  78. data/templates/cli/{syncer → syncers}/rsync_push +0 -2
  79. data/templates/cli/{syncer → syncers}/s3 +0 -2
  80. data/templates/general/links +1 -1
  81. metadata +241 -69
  82. data/lib/backup/compressor/lzma.rb +0 -52
  83. data/lib/backup/compressor/pbzip2.rb +0 -59
  84. data/lib/backup/configuration.rb +0 -33
  85. data/lib/backup/configuration/store.rb +0 -24
  86. data/templates/cli/compressor/lzma +0 -10
  87. data/templates/cli/compressor/pbzip2 +0 -10
  88. data/templates/cli/database/redis +0 -18
  89. data/templates/cli/notifier/nagios +0 -13
  90. data/templates/cli/storage/dropbox +0 -20
@@ -0,0 +1,102 @@
1
+ # encoding: utf-8
2
+
3
+ module Backup
4
+ module Config
5
+ # Context for loading user config.rb and model files.
6
+ class DSL
7
+ class Error < Backup::Error; end
8
+ Model = Backup::Model
9
+
10
+ class << self
11
+ private
12
+
13
+ # List the available database, storage, syncer, compressor, encryptor
14
+ # and notifier constants. These are used to define constant names within
15
+ # Backup::Config::DSL so that users may use a constant instead of a string.
16
+ # Nested namespaces are represented using Hashs. Deep nesting supported.
17
+ #
18
+ # Example, instead of:
19
+ # database "MySQL" do |mysql|
20
+ # sync_with "RSync::Local" do |rsync|
21
+ #
22
+ # You can do:
23
+ # database MySQL do |mysql|
24
+ # sync_with RSync::Local do |rsync|
25
+ #
26
+ def add_dsl_constants
27
+ create_modules(
28
+ DSL,
29
+ [ # Databases
30
+ ['MySQL', 'PostgreSQL', 'MongoDB', 'Redis', 'Riak'],
31
+ # Storages
32
+ ['S3', 'CloudFiles', 'Ninefold', 'Dropbox', 'FTP',
33
+ 'SFTP', 'SCP', 'RSync', 'Local'],
34
+ # Compressors
35
+ ['Gzip', 'Bzip2', 'Custom', 'Pbzip2', 'Lzma'],
36
+ # Encryptors
37
+ ['OpenSSL', 'GPG'],
38
+ # Syncers
39
+ [
40
+ { 'Cloud' => ['CloudFiles', 'S3'] },
41
+ { 'RSync' => ['Push', 'Pull', 'Local'] }
42
+ ],
43
+ # Notifiers
44
+ ['Mail', 'Twitter', 'Campfire', 'Prowl',
45
+ 'Hipchat', 'Pushover', 'HttpPost', 'Nagios']
46
+ ]
47
+ )
48
+ end
49
+
50
+ def create_modules(scope, names)
51
+ names.flatten.each do |name|
52
+ if name.is_a?(Hash)
53
+ name.each do |key, val|
54
+ create_modules(get_or_create_empty_module(scope, key), [val])
55
+ end
56
+ else
57
+ get_or_create_empty_module(scope, name)
58
+ end
59
+ end
60
+ end
61
+
62
+ def get_or_create_empty_module(scope, const)
63
+ if scope.const_defined?(const)
64
+ scope.const_get(const)
65
+ else
66
+ scope.const_set(const, Module.new)
67
+ end
68
+ end
69
+ end
70
+
71
+ add_dsl_constants # add constants on load
72
+
73
+ attr_reader :_config_options
74
+
75
+ def initialize
76
+ @_config_options = {}
77
+ end
78
+
79
+ # Allow users to set command line path options in config.rb
80
+ [:root_path, :data_path, :tmp_path].each do |name|
81
+ define_method name, lambda {|path| _config_options[name] = path }
82
+ end
83
+
84
+ # Allows users to create preconfigured models.
85
+ def preconfigure(name, &block)
86
+ unless name.is_a?(String) && name =~ /^[A-Z]/
87
+ raise Error, "Preconfigured model names must be given as a string " +
88
+ "and start with a capital letter."
89
+ end
90
+
91
+ if DSL.const_defined?(name)
92
+ raise Error, "'#{ name }' is already in use " +
93
+ "and can not be used for a preconfigured model."
94
+ end
95
+
96
+ DSL.const_set(name, Class.new(Model))
97
+ DSL.const_get(name).preconfigure(&block)
98
+ end
99
+
100
+ end
101
+ end
102
+ end
@@ -1,9 +1,8 @@
1
1
  # encoding: utf-8
2
+ require 'ostruct'
2
3
 
3
4
  module Backup
4
- module Configuration
5
- class Error < Backup::Error; end
6
-
5
+ module Config
7
6
  module Helpers
8
7
 
9
8
  def self.included(klass)
@@ -12,20 +11,16 @@ module Backup
12
11
 
13
12
  module ClassMethods
14
13
 
15
- ##
16
- # Returns or yields the Configuration::Store
17
- # for storing pre-configured defaults for the class.
18
14
  def defaults
19
- @configuration ||= Configuration::Store.new
15
+ @defaults ||= Config::Defaults.new
20
16
 
21
17
  if block_given?
22
- yield @configuration
18
+ yield @defaults
23
19
  else
24
- @configuration
20
+ @defaults
25
21
  end
26
22
  end
27
23
 
28
- ##
29
24
  # Used only within the specs
30
25
  def clear_defaults!
31
26
  defaults.reset!
@@ -39,7 +34,7 @@ module Backup
39
34
  msg = "#{ self }##{ name } has been deprecated as of " +
40
35
  "backup v.#{ deprecation[:version] }"
41
36
  msg << "\n#{ deprecation[:message] }" if deprecation[:message]
42
- Logger.warn Error.new(<<-EOS)
37
+ Logger.warn Config::Error.new(<<-EOS)
43
38
  [DEPRECATION WARNING]
44
39
  #{ msg }
45
40
  EOS
@@ -85,9 +80,8 @@ module Backup
85
80
  # If a default value was set for an invalid accessor,
86
81
  # this will raise a NameError.
87
82
  def load_defaults!
88
- configuration = self.class.defaults
89
- configuration._attributes.each do |name|
90
- val = configuration.send(name)
83
+ self.class.defaults._attributes.each do |name|
84
+ val = self.class.defaults.send(name)
91
85
  val = val.dup rescue val
92
86
  send(:"#{ name }=", val)
93
87
  end
@@ -129,6 +123,21 @@ module Backup
129
123
  end
130
124
  end
131
125
 
126
+ end # Helpers
127
+
128
+ # Store for pre-configured defaults.
129
+ class Defaults < OpenStruct
130
+ # Returns an Array of all attribute method names
131
+ # that default values were set for.
132
+ def _attributes
133
+ @table.keys
134
+ end
135
+
136
+ # Used only within the specs
137
+ def reset!
138
+ @table.clear
139
+ end
132
140
  end
141
+
133
142
  end
134
143
  end
@@ -5,8 +5,8 @@ module Backup
5
5
  class Error < Backup::Error; end
6
6
 
7
7
  class Base
8
- include Backup::Utilities::Helpers
9
- include Backup::Configuration::Helpers
8
+ include Utilities::Helpers
9
+ include Config::Helpers
10
10
 
11
11
  attr_reader :model, :database_id, :dump_path
12
12
 
@@ -181,24 +181,6 @@ module Backup
181
181
  cmd
182
182
  end
183
183
 
184
- attr_deprecate :utility_path, :version => '3.0.21',
185
- :message => 'Use Backup::Utilities.configure instead.',
186
- :action => lambda {|klass, val|
187
- Utilities.configure { mongodump val }
188
- }
189
-
190
- attr_deprecate :mongodump_utility, :version => '3.3.0',
191
- :message => 'Use Backup::Utilities.configure instead.',
192
- :action => lambda {|klass, val|
193
- Utilities.configure { mongodump val }
194
- }
195
-
196
- attr_deprecate :mongo_utility, :version => '3.3.0',
197
- :message => 'Use Backup::Utilities.configure instead.',
198
- :action => lambda {|klass, val|
199
- Utilities.configure { mongo val }
200
- }
201
-
202
184
  end
203
185
  end
204
186
  end
@@ -32,48 +32,28 @@ module Backup
32
32
  attr_accessor :only_tables
33
33
 
34
34
  ##
35
- # Additional "mysqldump" or "innobackupex (backup creation)" options
35
+ # Additional "mysqldump" options
36
36
  attr_accessor :additional_options
37
37
 
38
- ##
39
- # Additional innobackupex log preparation phase ("apply-logs") options
40
- attr_accessor :prepare_options
41
-
42
- ##
43
- # Default is :mysqldump (which is built in MySQL and generates
44
- # a textual SQL file), but can be changed to :innobackupex, which
45
- # has more feasible restore times for large databases.
46
- # See: http://www.percona.com/doc/percona-xtrabackup/
47
- attr_accessor :backup_engine
48
-
49
- ##
50
- # If set the backup engine command block is executed as the given user
51
- attr_accessor :sudo_user
52
-
53
- ##
54
- # If set, do not suppress innobackupdb output (useful for debugging)
55
- attr_accessor :verbose
56
-
57
38
  def initialize(model, database_id = nil, &block)
58
39
  super
59
40
  instance_eval(&block) if block_given?
60
41
 
61
42
  @name ||= :all
62
- @backup_engine ||= :mysqldump
63
43
  end
64
44
 
65
45
  ##
66
- # Performs the mysqldump or innobackupex command and outputs
67
- # the dump file in the +dump_path+ using +dump_filename+.
46
+ # Performs the mysqldump command and outputs the dump file
47
+ # in the +dump_path+ using +dump_filename+.
68
48
  #
69
- # <trigger>/databases/MySQL[-<database_id>].[sql|tar][.gz]
49
+ # <trigger>/databases/MySQL[-<database_id>].sql[.gz]
70
50
  def perform!
71
51
  super
72
52
 
73
53
  pipeline = Pipeline.new
74
- dump_ext = sql_backup? ? 'sql' : 'tar'
54
+ dump_ext = 'sql'
75
55
 
76
- pipeline << sudo_option(sql_backup? ? mysqldump : innobackupex)
56
+ pipeline << mysqldump
77
57
 
78
58
  model.compressor.compress_with do |command, ext|
79
59
  pipeline << command
@@ -119,10 +99,6 @@ module Backup
119
99
  Array(additional_options).join(' ')
120
100
  end
121
101
 
122
- def user_prepare_options
123
- Array(prepare_options).join(' ')
124
- end
125
-
126
102
  def name_option
127
103
  dump_all? ? '--all-databases' : name
128
104
  end
@@ -142,51 +118,6 @@ module Backup
142
118
  name == :all
143
119
  end
144
120
 
145
- attr_deprecate :utility_path, :version => '3.0.21',
146
- :message => 'Use Backup::Utilities.configure instead.',
147
- :action => lambda {|klass, val|
148
- Utilities.configure { mysqldump val }
149
- }
150
-
151
- attr_deprecate :mysqldump_utility, :version => '3.3.0',
152
- :message => 'Use Backup::Utilities.configure instead.',
153
- :action => lambda {|klass, val|
154
- Utilities.configure { mysqldump val }
155
- }
156
-
157
- def sql_backup?
158
- backup_engine.to_sym == :mysqldump
159
- end
160
-
161
- def innobackupex
162
- # Creation phase
163
- "#{ utility(:innobackupex) } #{ credential_options } " +
164
- "#{ connectivity_options } #{ user_options } " +
165
- "--no-timestamp #{ temp_dir } #{ quiet_option } && " +
166
- # Log applying phase (prepare for restore)
167
- "#{ utility(:innobackupex) } --apply-log #{ temp_dir } " +
168
- "#{ user_prepare_options } #{ quiet_option } && " +
169
- # Move files to tar-ed stream on stdout
170
- "#{ utility(:tar) } --remove-files -cf - " +
171
- "-C #{ File.dirname(temp_dir) } #{ File.basename(temp_dir) }"
172
- end
173
-
174
- def sudo_option(command_block)
175
- return command_block unless sudo_user
176
-
177
- "sudo -s -u #{ sudo_user } -- <<END_OF_SUDO\n" +
178
- "#{command_block}\n" +
179
- "END_OF_SUDO\n"
180
- end
181
-
182
- def quiet_option
183
- verbose ? "" : " 2> /dev/null "
184
- end
185
-
186
- def temp_dir
187
- File.join(dump_path, dump_filename + ".bkpdir")
188
- end
189
-
190
121
  end
191
122
  end
192
123
  end
@@ -128,18 +128,6 @@ module Backup
128
128
  name == :all
129
129
  end
130
130
 
131
- attr_deprecate :utility_path, :version => '3.0.21',
132
- :message => 'Use Backup::Utilities.configure instead.',
133
- :action => lambda {|klass, val|
134
- Utilities.configure { pg_dump val }
135
- }
136
-
137
- attr_deprecate :pg_dump_utility, :version => '3.3.0',
138
- :message => 'Use Backup::Utilities.configure instead.',
139
- :action => lambda {|klass, val|
140
- Utilities.configure { pg_dump val }
141
- }
142
-
143
131
  end
144
132
  end
145
133
  end
@@ -5,70 +5,121 @@ module Backup
5
5
  class Redis < Base
6
6
  class Error < Backup::Error; end
7
7
 
8
+ MODES = [:copy, :sync]
9
+
8
10
  ##
9
- # Name of the redis dump file.
11
+ # Mode of operation.
12
+ #
13
+ # [:copy]
14
+ # Copies the redis dump file specified by {#rdb_path}.
15
+ # This data will be current as of the last RDB Snapshot
16
+ # performed by the server (per your redis.conf settings).
17
+ # You may set {#invoke_save} to +true+ to have Backup issue
18
+ # a +SAVE+ command to update the dump file with the current
19
+ # data before performing the copy.
20
+ #
21
+ # [:sync]
22
+ # Performs a dump of your redis data using +redis-cli --rdb -+.
23
+ # Redis implements this internally using a +SYNC+ command.
24
+ # The operation is analogous to requesting a +BGSAVE+, then having the
25
+ # dump returned. This mode is capable of dumping data from a local or
26
+ # remote server. Requires Redis v2.6 or better.
10
27
  #
11
- # This is set in `redis.conf` as `dbfilename`.
12
- # This must be set to the name of that file without the `.rdb` extension.
13
- # Default: 'dump'
14
- attr_accessor :name
28
+ # Defaults to +:copy+.
29
+ attr_accessor :mode
15
30
 
16
31
  ##
17
- # Path to the redis dump file.
32
+ # Full path to the redis dump file.
18
33
  #
19
- # This is set in `redis.conf` as `dir`.
20
- attr_accessor :path
34
+ # Required when {#mode} is +:copy+.
35
+ attr_accessor :rdb_path
21
36
 
22
37
  ##
23
- # Password for the redis-cli utility to perform the `SAVE` command
24
- # if +invoke_save+ is set `true`.
25
- attr_accessor :password
38
+ # Perform a +SAVE+ command using the +redis-cli+ utility
39
+ # before copying the dump file specified by {#rdb_path}.
40
+ #
41
+ # Only valid when {#mode} is +:copy+.
42
+ attr_accessor :invoke_save
26
43
 
27
44
  ##
28
- # Connectivity options for the +invoke_save+ option.
45
+ # Connectivity options for the +redis-cli+ utility.
29
46
  attr_accessor :host, :port, :socket
30
47
 
31
48
  ##
32
- # Determines whether Backup should invoke the `SAVE` command through
33
- # the `redis-cli` utility to persist the most recent data before
34
- # copying the dump file specified by +path+ and +name+.
35
- attr_accessor :invoke_save
49
+ # Password for the +redis-cli+ utility.
50
+ attr_accessor :password
36
51
 
37
52
  ##
38
- # Additional "redis-cli" options
53
+ # Additional options for the +redis-cli+ utility.
39
54
  attr_accessor :additional_options
40
55
 
41
56
  def initialize(model, database_id = nil, &block)
42
57
  super
43
58
  instance_eval(&block) if block_given?
44
59
 
45
- @name ||= 'dump'
60
+ @mode ||= :copy
61
+
62
+ unless MODES.include?(mode)
63
+ raise Error, "'#{ mode }' is not a valid mode"
64
+ end
65
+
66
+ if mode == :copy && rdb_path.nil?
67
+ raise Error, '`rdb_path` must be set when `mode` is :copy'
68
+ end
46
69
  end
47
70
 
48
71
  ##
49
- # Copies and optionally compresses the Redis dump file to the
50
- # +dump_path+ using the +dump_filename+.
72
+ # Performs the dump based on {#mode} and stores the Redis dump file
73
+ # to the +dump_path+ using the +dump_filename+.
51
74
  #
52
75
  # <trigger>/databases/Redis[-<database_id>].rdb[.gz]
53
- #
54
- # If +invoke_save+ is true, `redis-cli SAVE` will be invoked.
55
76
  def perform!
56
77
  super
57
78
 
58
- invoke_save! if invoke_save
59
- copy!
79
+ case mode
80
+ when :sync
81
+ # messages output by `redis-cli --rdb` on $stderr
82
+ Logger.configure do
83
+ ignore_warning(/Transfer finished with success/)
84
+ ignore_warning(/SYNC sent to master/)
85
+ end
86
+ sync!
87
+ when :copy
88
+ save! if invoke_save
89
+ copy!
90
+ end
60
91
 
61
92
  log!(:finished)
62
93
  end
63
94
 
64
95
  private
65
96
 
66
- def invoke_save!
67
- resp = run(redis_save_cmd)
97
+ def sync!
98
+ pipeline = Pipeline.new
99
+ dump_ext = 'rdb'
100
+
101
+ pipeline << "#{ redis_cli_cmd } --rdb -"
102
+
103
+ model.compressor.compress_with do |command, ext|
104
+ pipeline << command
105
+ dump_ext << ext
106
+ end if model.compressor
107
+
108
+ pipeline << "#{ utility(:cat) } > " +
109
+ "'#{ File.join(dump_path, dump_filename) }.#{ dump_ext }'"
110
+
111
+ pipeline.run
112
+
113
+ unless pipeline.success?
114
+ raise Error, "Dump Failed!\n" + pipeline.error_messages
115
+ end
116
+ end
117
+
118
+ def save!
119
+ resp = run("#{ redis_cli_cmd } SAVE")
68
120
  unless resp =~ /OK$/
69
121
  raise Error, <<-EOS
70
- Could not invoke the Redis SAVE command.
71
- Command was: #{ redis_save_cmd }
122
+ Failed to invoke the `SAVE` command
72
123
  Response was: #{ resp }
73
124
  EOS
74
125
  end
@@ -84,27 +135,26 @@ module Backup
84
135
  end
85
136
 
86
137
  def copy!
87
- src_path = File.join(path, name + '.rdb')
88
- unless File.exist?(src_path)
138
+ unless File.exist?(rdb_path)
89
139
  raise Error, <<-EOS
90
140
  Redis database dump not found
91
- File path was #{ src_path }
141
+ `rdb_path` was '#{ rdb_path }'
92
142
  EOS
93
143
  end
94
144
 
95
145
  dst_path = File.join(dump_path, dump_filename + '.rdb')
96
146
  if model.compressor
97
147
  model.compressor.compress_with do |command, ext|
98
- run("#{ command } -c '#{ src_path }' > '#{ dst_path + ext }'")
148
+ run("#{ command } -c '#{ rdb_path }' > '#{ dst_path + ext }'")
99
149
  end
100
150
  else
101
- FileUtils.cp(src_path, dst_path)
151
+ FileUtils.cp(rdb_path, dst_path)
102
152
  end
103
153
  end
104
154
 
105
- def redis_save_cmd
155
+ def redis_cli_cmd
106
156
  "#{ utility('redis-cli') } #{ password_option } " +
107
- "#{ connectivity_options } #{ user_options } SAVE"
157
+ "#{ connectivity_options } #{ user_options }"
108
158
  end
109
159
 
110
160
  def password_option
@@ -124,18 +174,6 @@ module Backup
124
174
  Array(additional_options).join(' ')
125
175
  end
126
176
 
127
- attr_deprecate :utility_path, :version => '3.0.21',
128
- :message => 'Use Backup::Utilities.configure instead.',
129
- :action => lambda {|klass, val|
130
- Utilities.configure { redis_cli val }
131
- }
132
-
133
- attr_deprecate :redis_cli_utility, :version => '3.3.0',
134
- :message => 'Use Backup::Utilities.configure instead.',
135
- :action => lambda {|klass, val|
136
- Utilities.configure { redis_cli val }
137
- }
138
-
139
177
  end
140
178
  end
141
179
  end