backup 4.4.1 → 5.0.0.beta.3

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 (81) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +19 -0
  3. data/README.md +13 -9
  4. data/bin/docker_test +24 -0
  5. data/lib/backup/archive.rb +31 -32
  6. data/lib/backup/binder.rb +2 -6
  7. data/lib/backup/cleaner.rb +14 -18
  8. data/lib/backup/cli.rb +104 -108
  9. data/lib/backup/cloud_io/base.rb +4 -7
  10. data/lib/backup/cloud_io/cloud_files.rb +60 -62
  11. data/lib/backup/cloud_io/s3.rb +69 -76
  12. data/lib/backup/compressor/base.rb +4 -7
  13. data/lib/backup/compressor/bzip2.rb +3 -7
  14. data/lib/backup/compressor/custom.rb +2 -6
  15. data/lib/backup/compressor/gzip.rb +16 -17
  16. data/lib/backup/config/dsl.rb +16 -17
  17. data/lib/backup/config/helpers.rb +10 -16
  18. data/lib/backup/config.rb +17 -18
  19. data/lib/backup/database/base.rb +22 -21
  20. data/lib/backup/database/mongodb.rb +36 -37
  21. data/lib/backup/database/mysql.rb +40 -41
  22. data/lib/backup/database/openldap.rb +8 -10
  23. data/lib/backup/database/postgresql.rb +29 -30
  24. data/lib/backup/database/redis.rb +27 -30
  25. data/lib/backup/database/riak.rb +15 -18
  26. data/lib/backup/database/sqlite.rb +4 -6
  27. data/lib/backup/encryptor/base.rb +2 -4
  28. data/lib/backup/encryptor/gpg.rb +49 -59
  29. data/lib/backup/encryptor/open_ssl.rb +11 -14
  30. data/lib/backup/errors.rb +7 -12
  31. data/lib/backup/logger/console.rb +5 -8
  32. data/lib/backup/logger/fog_adapter.rb +2 -6
  33. data/lib/backup/logger/logfile.rb +10 -12
  34. data/lib/backup/logger/syslog.rb +2 -4
  35. data/lib/backup/logger.rb +16 -18
  36. data/lib/backup/model.rb +33 -40
  37. data/lib/backup/notifier/base.rb +24 -26
  38. data/lib/backup/notifier/campfire.rb +9 -11
  39. data/lib/backup/notifier/command.rb +0 -3
  40. data/lib/backup/notifier/datadog.rb +9 -12
  41. data/lib/backup/notifier/flowdock.rb +13 -17
  42. data/lib/backup/notifier/hipchat.rb +11 -13
  43. data/lib/backup/notifier/http_post.rb +11 -14
  44. data/lib/backup/notifier/mail.rb +42 -59
  45. data/lib/backup/notifier/nagios.rb +5 -9
  46. data/lib/backup/notifier/pagerduty.rb +10 -12
  47. data/lib/backup/notifier/prowl.rb +15 -15
  48. data/lib/backup/notifier/pushover.rb +7 -10
  49. data/lib/backup/notifier/ses.rb +34 -16
  50. data/lib/backup/notifier/slack.rb +39 -40
  51. data/lib/backup/notifier/twitter.rb +2 -5
  52. data/lib/backup/notifier/zabbix.rb +11 -14
  53. data/lib/backup/package.rb +5 -9
  54. data/lib/backup/packager.rb +16 -17
  55. data/lib/backup/pipeline.rb +17 -21
  56. data/lib/backup/splitter.rb +8 -11
  57. data/lib/backup/storage/base.rb +5 -8
  58. data/lib/backup/storage/cloud_files.rb +21 -23
  59. data/lib/backup/storage/cycler.rb +10 -15
  60. data/lib/backup/storage/dropbox.rb +15 -21
  61. data/lib/backup/storage/ftp.rb +14 -10
  62. data/lib/backup/storage/local.rb +5 -8
  63. data/lib/backup/storage/qiniu.rb +8 -8
  64. data/lib/backup/storage/rsync.rb +24 -26
  65. data/lib/backup/storage/s3.rb +27 -28
  66. data/lib/backup/storage/scp.rb +10 -12
  67. data/lib/backup/storage/sftp.rb +10 -12
  68. data/lib/backup/syncer/base.rb +5 -8
  69. data/lib/backup/syncer/cloud/base.rb +27 -30
  70. data/lib/backup/syncer/cloud/cloud_files.rb +16 -18
  71. data/lib/backup/syncer/cloud/local_file.rb +5 -8
  72. data/lib/backup/syncer/cloud/s3.rb +23 -24
  73. data/lib/backup/syncer/rsync/base.rb +6 -10
  74. data/lib/backup/syncer/rsync/local.rb +1 -5
  75. data/lib/backup/syncer/rsync/pull.rb +6 -10
  76. data/lib/backup/syncer/rsync/push.rb +18 -22
  77. data/lib/backup/template.rb +9 -14
  78. data/lib/backup/utilities.rb +78 -69
  79. data/lib/backup/version.rb +1 -3
  80. data/lib/backup.rb +74 -78
  81. metadata +107 -676
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Backup
4
2
  module Database
5
3
  class MySQL < Base
@@ -78,71 +76,73 @@ module Backup
78
76
  super
79
77
 
80
78
  pipeline = Pipeline.new
81
- dump_ext = sql_backup? ? 'sql' : 'tar'
79
+ dump_ext = sql_backup? ? "sql" : "tar"
82
80
 
83
81
  pipeline << sudo_option(sql_backup? ? mysqldump : innobackupex)
84
82
 
85
- model.compressor.compress_with do |command, ext|
86
- pipeline << command
87
- dump_ext << ext
88
- end if model.compressor
83
+ if model.compressor
84
+ model.compressor.compress_with do |command, ext|
85
+ pipeline << command
86
+ dump_ext << ext
87
+ end
88
+ end
89
89
 
90
- pipeline << "#{ utility(:cat) } > " +
91
- "'#{ File.join(dump_path, dump_filename) }.#{ dump_ext }'"
90
+ pipeline << "#{utility(:cat)} > " \
91
+ "'#{File.join(dump_path, dump_filename)}.#{dump_ext}'"
92
92
 
93
93
  pipeline.run
94
94
  if pipeline.success?
95
95
  log!(:finished)
96
96
  else
97
- raise Error, "Dump Failed!\n" + pipeline.error_messages
97
+ raise Error, "Dump Failed!\n#{pipeline.error_messages}"
98
98
  end
99
99
  end
100
100
 
101
101
  private
102
102
 
103
103
  def mysqldump
104
- "#{ utility(:mysqldump) } #{ user_options } #{ credential_options } " +
105
- "#{ connectivity_options } #{ name_option } " +
106
- "#{ tables_to_dump } #{ tables_to_skip }"
104
+ "#{utility(:mysqldump)} #{user_options} #{credential_options} " \
105
+ "#{connectivity_options} #{name_option} " \
106
+ "#{tables_to_dump} #{tables_to_skip}"
107
107
  end
108
108
 
109
109
  def credential_options
110
110
  opts = []
111
- opts << "--user=#{ Shellwords.escape(username) }" if username
112
- opts << "--password=#{ Shellwords.escape(password) }" if password
113
- opts.join(' ')
111
+ opts << "--user=#{Shellwords.escape(username)}" if username
112
+ opts << "--password=#{Shellwords.escape(password)}" if password
113
+ opts.join(" ")
114
114
  end
115
115
 
116
116
  def connectivity_options
117
- return "--socket='#{ socket }'" if socket
117
+ return "--socket='#{socket}'" if socket
118
118
 
119
119
  opts = []
120
- opts << "--host='#{ host }'" if host
121
- opts << "--port='#{ port }'" if port
122
- opts.join(' ')
120
+ opts << "--host='#{host}'" if host
121
+ opts << "--port='#{port}'" if port
122
+ opts.join(" ")
123
123
  end
124
124
 
125
125
  def user_options
126
- Array(additional_options).join(' ')
126
+ Array(additional_options).join(" ")
127
127
  end
128
128
 
129
129
  def user_prepare_options
130
- Array(prepare_options).join(' ')
130
+ Array(prepare_options).join(" ")
131
131
  end
132
132
 
133
133
  def name_option
134
- dump_all? ? '--all-databases' : name
134
+ dump_all? ? "--all-databases" : name
135
135
  end
136
136
 
137
137
  def tables_to_dump
138
- Array(only_tables).join(' ') unless dump_all?
138
+ Array(only_tables).join(" ") unless dump_all?
139
139
  end
140
140
 
141
141
  def tables_to_skip
142
142
  Array(skip_tables).map do |table|
143
- table = (dump_all? || table['.']) ? table : "#{ name }.#{ table }"
144
- "--ignore-table='#{ table }'"
145
- end.join(' ')
143
+ table = dump_all? || table["."] ? table : "#{name}.#{table}"
144
+ "--ignore-table='#{table}'"
145
+ end.join(" ")
146
146
  end
147
147
 
148
148
  def dump_all?
@@ -155,28 +155,28 @@ module Backup
155
155
 
156
156
  def innobackupex
157
157
  # Creation phase
158
- "#{ utility(:innobackupex) } #{ credential_options } " +
159
- "#{ connectivity_options } #{ user_options } " +
160
- "--no-timestamp #{ temp_dir } #{ quiet_option } && " +
161
- innobackupex_prepare +
162
- # Move files to tar-ed stream on stdout
163
- "#{ utility(:tar) } --remove-files -cf - " +
164
- "-C #{ File.dirname(temp_dir) } #{ File.basename(temp_dir) }"
158
+ "#{utility(:innobackupex)} #{credential_options} " \
159
+ "#{connectivity_options} #{user_options} " \
160
+ "--no-timestamp #{temp_dir} #{quiet_option} && " +
161
+ innobackupex_prepare +
162
+ # Move files to tar-ed stream on stdout
163
+ "#{utility(:tar)} --remove-files -cf - " \
164
+ "-C #{File.dirname(temp_dir)} #{File.basename(temp_dir)}"
165
165
  end
166
166
 
167
167
  def innobackupex_prepare
168
168
  return "" unless @prepare_backup
169
169
  # Log applying phase (prepare for restore)
170
- "#{ utility(:innobackupex) } --apply-log #{ temp_dir } " +
171
- "#{ user_prepare_options } #{ quiet_option } && "
170
+ "#{utility(:innobackupex)} --apply-log #{temp_dir} " \
171
+ "#{user_prepare_options} #{quiet_option} && "
172
172
  end
173
173
 
174
174
  def sudo_option(command_block)
175
175
  return command_block unless sudo_user
176
176
 
177
- "sudo -s -u #{ sudo_user } -- <<END_OF_SUDO\n" +
178
- "#{command_block}\n" +
179
- "END_OF_SUDO\n"
177
+ "sudo -s -u #{sudo_user} -- <<END_OF_SUDO\n" \
178
+ "#{command_block}\n" \
179
+ "END_OF_SUDO\n"
180
180
  end
181
181
 
182
182
  def quiet_option
@@ -184,9 +184,8 @@ module Backup
184
184
  end
185
185
 
186
186
  def temp_dir
187
- File.join(dump_path, dump_filename + ".bkpdir")
187
+ File.join(dump_path, "#{dump_filename}.bkpdir")
188
188
  end
189
-
190
189
  end
191
190
  end
192
191
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Backup
4
2
  module Database
5
3
  class OpenLDAP < Base
@@ -33,11 +31,11 @@ module Backup
33
31
  super
34
32
  instance_eval(&block) if block_given?
35
33
 
36
- @name ||= 'ldap_backup'
34
+ @name ||= "ldap_backup"
37
35
  @use_sudo ||= false
38
- @slapcat_args ||= Array.new
36
+ @slapcat_args ||= []
39
37
  @slapcat_utility ||= utility(:slapcat)
40
- @slapcat_conf ||= '/etc/ldap/slapd.d'
38
+ @slapcat_conf ||= "/etc/ldap/slapd.d"
41
39
  end
42
40
 
43
41
  ##
@@ -47,7 +45,7 @@ module Backup
47
45
  super
48
46
 
49
47
  pipeline = Pipeline.new
50
- dump_ext = 'ldif'
48
+ dump_ext = "ldif"
51
49
 
52
50
  pipeline << slapcat
53
51
  if @model.compressor
@@ -57,8 +55,8 @@ module Backup
57
55
  end
58
56
  end
59
57
 
60
- pipeline << "#{ utility(:cat) } > " +
61
- "'#{ File.join(dump_path, dump_filename) }.#{ dump_ext }'"
58
+ pipeline << "#{utility(:cat)} > " \
59
+ "'#{File.join(dump_path, dump_filename)}.#{dump_ext}'"
62
60
 
63
61
  pipeline.run
64
62
  if pipeline.success?
@@ -73,7 +71,7 @@ module Backup
73
71
  ##
74
72
  # Builds the full slapcat string based on all attributes
75
73
  def slapcat
76
- command = "#{ slapcat_utility } #{ slapcat_conf_option } #{ slapcat_conf } #{ user_options }"
74
+ command = "#{slapcat_utility} #{slapcat_conf_option} #{slapcat_conf} #{user_options}"
77
75
  command.prepend("sudo ") if use_sudo
78
76
  command
79
77
  end
@@ -88,7 +86,7 @@ module Backup
88
86
  # Builds a compatible string for the additional options
89
87
  # specified by the user
90
88
  def user_options
91
- slapcat_args.join(' ')
89
+ slapcat_args.join(" ")
92
90
  end
93
91
  end
94
92
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Backup
4
2
  module Database
5
3
  class PostgreSQL < Base
@@ -53,17 +51,19 @@ module Backup
53
51
  super
54
52
 
55
53
  pipeline = Pipeline.new
56
- dump_ext = 'sql'
54
+ dump_ext = "sql"
57
55
 
58
56
  pipeline << (dump_all? ? pgdumpall : pgdump)
59
57
 
60
- model.compressor.compress_with do |command, ext|
61
- pipeline << command
62
- dump_ext << ext
63
- end if model.compressor
58
+ if model.compressor
59
+ model.compressor.compress_with do |command, ext|
60
+ pipeline << command
61
+ dump_ext << ext
62
+ end
63
+ end
64
64
 
65
- pipeline << "#{ utility(:cat) } > " +
66
- "'#{ File.join(dump_path, dump_filename) }.#{ dump_ext }'"
65
+ pipeline << "#{utility(:cat)} > " \
66
+ "'#{File.join(dump_path, dump_filename)}.#{dump_ext}'"
67
67
 
68
68
  pipeline.run
69
69
  if pipeline.success?
@@ -74,60 +74,59 @@ module Backup
74
74
  end
75
75
 
76
76
  def pgdump
77
- "#{ password_option }" +
78
- "#{ sudo_option }" +
79
- "#{ utility(:pg_dump) } #{ username_option } #{ connectivity_options } " +
80
- "#{ user_options } #{ tables_to_dump } #{ tables_to_skip } #{ name }"
77
+ password_option.to_s +
78
+ sudo_option.to_s +
79
+ "#{utility(:pg_dump)} #{username_option} #{connectivity_options} " \
80
+ "#{user_options} #{tables_to_dump} #{tables_to_skip} #{name}"
81
81
  end
82
82
 
83
83
  def pgdumpall
84
- "#{ password_option }" +
85
- "#{ sudo_option }" +
86
- "#{ utility(:pg_dumpall) } #{ username_option } " +
87
- "#{ connectivity_options } #{ user_options }"
84
+ password_option.to_s +
85
+ sudo_option.to_s +
86
+ "#{utility(:pg_dumpall)} #{username_option} " \
87
+ "#{connectivity_options} #{user_options}"
88
88
  end
89
89
 
90
90
  def password_option
91
- "PGPASSWORD=#{ Shellwords.escape(password) } " if password
91
+ "PGPASSWORD=#{Shellwords.escape(password)} " if password
92
92
  end
93
93
 
94
94
  def sudo_option
95
- "#{ utility(:sudo) } -n -H -u #{ sudo_user } " if sudo_user
95
+ "#{utility(:sudo)} -n -H -u #{sudo_user} " if sudo_user
96
96
  end
97
97
 
98
98
  def username_option
99
- "--username=#{ Shellwords.escape(username) }" if username
99
+ "--username=#{Shellwords.escape(username)}" if username
100
100
  end
101
101
 
102
102
  def connectivity_options
103
- return "--host='#{ socket }'" if socket
103
+ return "--host='#{socket}'" if socket
104
104
 
105
105
  opts = []
106
- opts << "--host='#{ host }'" if host
107
- opts << "--port='#{ port }'" if port
108
- opts.join(' ')
106
+ opts << "--host='#{host}'" if host
107
+ opts << "--port='#{port}'" if port
108
+ opts.join(" ")
109
109
  end
110
110
 
111
111
  def user_options
112
- Array(additional_options).join(' ')
112
+ Array(additional_options).join(" ")
113
113
  end
114
114
 
115
115
  def tables_to_dump
116
116
  Array(only_tables).map do |table|
117
- "--table='#{ table }'"
118
- end.join(' ')
117
+ "--table='#{table}'"
118
+ end.join(" ")
119
119
  end
120
120
 
121
121
  def tables_to_skip
122
122
  Array(skip_tables).map do |table|
123
- "--exclude-table='#{ table }'"
124
- end.join(' ')
123
+ "--exclude-table='#{table}'"
124
+ end.join(" ")
125
125
  end
126
126
 
127
127
  def dump_all?
128
128
  name == :all
129
129
  end
130
-
131
130
  end
132
131
  end
133
132
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Backup
4
2
  module Database
5
3
  class Redis < Base
@@ -59,12 +57,10 @@ module Backup
59
57
 
60
58
  @mode ||= :copy
61
59
 
62
- unless MODES.include?(mode)
63
- raise Error, "'#{ mode }' is not a valid mode"
64
- end
60
+ raise Error, "'#{mode}' is not a valid mode" unless MODES.include?(mode)
65
61
 
66
62
  if mode == :copy && rdb_path.nil?
67
- raise Error, '`rdb_path` must be set when `mode` is :copy'
63
+ raise Error, "`rdb_path` must be set when `mode` is :copy"
68
64
  end
69
65
  end
70
66
 
@@ -96,17 +92,19 @@ module Backup
96
92
 
97
93
  def sync!
98
94
  pipeline = Pipeline.new
99
- dump_ext = 'rdb'
95
+ dump_ext = "rdb"
100
96
 
101
- pipeline << "#{ redis_cli_cmd } --rdb -"
97
+ pipeline << "#{redis_cli_cmd} --rdb -"
102
98
 
103
- model.compressor.compress_with do |command, ext|
104
- pipeline << command
105
- dump_ext << ext
106
- end if model.compressor
99
+ if model.compressor
100
+ model.compressor.compress_with do |command, ext|
101
+ pipeline << command
102
+ dump_ext << ext
103
+ end
104
+ end
107
105
 
108
- pipeline << "#{ utility(:cat) } > " +
109
- "'#{ File.join(dump_path, dump_filename) }.#{ dump_ext }'"
106
+ pipeline << "#{utility(:cat)} > " \
107
+ "'#{File.join(dump_path, dump_filename)}.#{dump_ext}'"
110
108
 
111
109
  pipeline.run
112
110
 
@@ -116,17 +114,16 @@ module Backup
116
114
  end
117
115
 
118
116
  def save!
119
- resp = run("#{ redis_cli_cmd } SAVE")
117
+ resp = run("#{redis_cli_cmd} SAVE")
120
118
  unless resp =~ /OK$/
121
119
  raise Error, <<-EOS
122
120
  Failed to invoke the `SAVE` command
123
- Response was: #{ resp }
121
+ Response was: #{resp}
124
122
  EOS
125
123
  end
126
-
127
124
  rescue Error
128
125
  if resp =~ /save already in progress/
129
- unless (attempts ||= '0').next! == '5'
126
+ unless (attempts ||= "0").next! == "5"
130
127
  sleep 5
131
128
  retry
132
129
  end
@@ -138,14 +135,14 @@ module Backup
138
135
  unless File.exist?(rdb_path)
139
136
  raise Error, <<-EOS
140
137
  Redis database dump not found
141
- `rdb_path` was '#{ rdb_path }'
138
+ `rdb_path` was '#{rdb_path}'
142
139
  EOS
143
140
  end
144
141
 
145
- dst_path = File.join(dump_path, dump_filename + '.rdb')
142
+ dst_path = File.join(dump_path, dump_filename + ".rdb")
146
143
  if model.compressor
147
144
  model.compressor.compress_with do |command, ext|
148
- run("#{ command } -c '#{ rdb_path }' > '#{ dst_path + ext }'")
145
+ run("#{command} -c '#{rdb_path}' > '#{dst_path + ext}'")
149
146
  end
150
147
  else
151
148
  FileUtils.cp(rdb_path, dst_path)
@@ -153,27 +150,27 @@ module Backup
153
150
  end
154
151
 
155
152
  def redis_cli_cmd
156
- "#{ utility('redis-cli') } #{ password_option } " +
157
- "#{ connectivity_options } #{ user_options }"
153
+ "#{utility("redis-cli")} #{password_option} " \
154
+ "#{connectivity_options} #{user_options}"
158
155
  end
159
156
 
160
157
  def password_option
161
- "-a '#{ password }'" if password
158
+ return unless password
159
+ "-a '#{password}'"
162
160
  end
163
161
 
164
162
  def connectivity_options
165
- return "-s '#{ socket }'" if socket
163
+ return "-s '#{socket}'" if socket
166
164
 
167
165
  opts = []
168
- opts << "-h '#{ host }'" if host
169
- opts << "-p '#{ port }'" if port
170
- opts.join(' ')
166
+ opts << "-h '#{host}'" if host
167
+ opts << "-p '#{port}'" if port
168
+ opts.join(" ")
171
169
  end
172
170
 
173
171
  def user_options
174
- Array(additional_options).join(' ')
172
+ Array(additional_options).join(" ")
175
173
  end
176
-
177
174
  end
178
175
  end
179
176
  end
@@ -1,9 +1,6 @@
1
- # encoding: utf-8
2
-
3
1
  module Backup
4
2
  module Database
5
3
  class Riak < Base
6
-
7
4
  ##
8
5
  # Node is the node from which to perform the backup.
9
6
  # Default: riak@127.0.0.1
@@ -23,9 +20,9 @@ module Backup
23
20
  super
24
21
  instance_eval(&block) if block_given?
25
22
 
26
- @node ||= 'riak@127.0.0.1'
27
- @cookie ||= 'riak'
28
- @user ||= 'riak'
23
+ @node ||= "riak@127.0.0.1"
24
+ @cookie ||= "riak"
25
+ @user ||= "riak"
29
26
  end
30
27
 
31
28
  ##
@@ -38,14 +35,16 @@ module Backup
38
35
 
39
36
  dump_file = File.join(dump_path, dump_filename)
40
37
  with_riak_owned_dump_path do
41
- run("#{ riakadmin } backup #{ node } #{ cookie } '#{ dump_file }' node")
38
+ run("#{riakadmin} backup #{node} #{cookie} '#{dump_file}' node")
42
39
  end
43
40
 
44
- model.compressor.compress_with do |command, ext|
45
- dump_file << "-#{ node }" # `riak-admin` appends `node` to the filename.
46
- run("#{ command } -c '#{ dump_file }' > '#{ dump_file + ext }'")
47
- FileUtils.rm_f(dump_file)
48
- end if model.compressor
41
+ if model.compressor
42
+ model.compressor.compress_with do |command, ext|
43
+ dump_file << "-#{node}" # `riak-admin` appends `node` to the filename.
44
+ run("#{command} -c '#{dump_file}' > '#{dump_file + ext}'")
45
+ FileUtils.rm_f(dump_file)
46
+ end
47
+ end
49
48
 
50
49
  log!(:finished)
51
50
  end
@@ -61,22 +60,20 @@ module Backup
61
60
  # the user running Backup, since the absence of the execute bit on their
62
61
  # home directory would deny +user+ access.
63
62
  def with_riak_owned_dump_path
64
- run("#{ utility(:sudo) } -n #{ utility(:chown) } " +
65
- "#{ user } '#{ dump_path }'")
63
+ run "#{utility(:sudo)} -n #{utility(:chown)} #{user} '#{dump_path}'"
66
64
  yield
67
65
  ensure
68
66
  # reclaim ownership
69
- run("#{ utility(:sudo) } -n #{ utility(:chown) } -R " +
70
- "#{ Config.user } '#{ dump_path }'")
67
+ run "#{utility(:sudo)} -n #{utility(:chown)} -R " \
68
+ "#{Config.user} '#{dump_path}'"
71
69
  end
72
70
 
73
71
  ##
74
72
  # `riak-admin` must be run as the riak +user+.
75
73
  # It will do this itself, but without `-n` and emits a message on STDERR.
76
74
  def riakadmin
77
- "#{ utility(:sudo) } -n -u #{ user } #{ utility('riak-admin') }"
75
+ "#{utility(:sudo)} -n -u #{user} #{utility("riak-admin")}"
78
76
  end
79
-
80
77
  end
81
78
  end
82
79
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Backup
4
2
  module Database
5
3
  class SQLite < Base
@@ -28,10 +26,10 @@ module Backup
28
26
  def perform!
29
27
  super
30
28
 
31
- dump = "echo '.dump' | #{ sqlitedump_utility } #{ path }"
29
+ dump = "echo '.dump' | #{sqlitedump_utility} #{path}"
32
30
 
33
31
  pipeline = Pipeline.new
34
- dump_ext = 'sql'
32
+ dump_ext = "sql"
35
33
 
36
34
  pipeline << dump
37
35
  if model.compressor
@@ -41,7 +39,7 @@ module Backup
41
39
  end
42
40
  end
43
41
 
44
- pipeline << "cat > '#{ File.join( dump_path , dump_filename) }.#{ dump_ext }'"
42
+ pipeline << "cat > '#{File.join(dump_path, dump_filename)}.#{dump_ext}'"
45
43
 
46
44
  pipeline.run
47
45
 
@@ -49,7 +47,7 @@ module Backup
49
47
  log!(:finished)
50
48
  else
51
49
  raise Error,
52
- "#{ database_name } Dump Failed!\n" + pipeline.error_messages
50
+ "#{database_name} Dump Failed!\n" + pipeline.error_messages
53
51
  end
54
52
  end
55
53
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Backup
4
2
  module Encryptor
5
3
  class Base
@@ -15,14 +13,14 @@ module Backup
15
13
  ##
16
14
  # Return the encryptor name, with Backup namespace removed
17
15
  def encryptor_name
18
- self.class.to_s.sub('Backup::', '')
16
+ self.class.to_s.sub("Backup::", "")
19
17
  end
20
18
 
21
19
  ##
22
20
  # Logs a message to the console and log file to inform
23
21
  # the client that Backup is encrypting the archive
24
22
  def log!
25
- Logger.info "Using #{ encryptor_name } to encrypt the archive."
23
+ Logger.info "Using #{encryptor_name} to encrypt the archive."
26
24
  end
27
25
  end
28
26
  end