backup-remote 0.0.5 → 0.0.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c2fc3569f37e204350b31fc06bf5edde0f15a89e
4
- data.tar.gz: dd9db17395b314a876850f35aecc9bea56ea5c0d
3
+ metadata.gz: 1dc51aa59099a0bf9406f503155f31630759586e
4
+ data.tar.gz: cea4e466d787dad9e31bb7d34ebef3972f141295
5
5
  SHA512:
6
- metadata.gz: 7e6bdac05bd47da6f855508e369576f59011058ea55cccad9b856b0514158786730a6207d1f0be31371c9fd7055913c1a8d7e5688c0fce0f74fdecec050b8a99
7
- data.tar.gz: a40f18efe432ad1e45297e04549070435a6d487e55bc673e44fdb00ca3cf17a143c031bdbf95bf0c1a780f0140d0d7e48e58b9233ff7f515b4f5f87093456609
6
+ metadata.gz: 246ae877464476b31e954cd8e0a0ef37e5ca737fd43094579427f095153364bf334b0e663d3692ed757b0044d5b2b12e46cfcbbfff320e59c8a4b98801b259ec
7
+ data.tar.gz: 3d97561e03e95b86a46c7491bd54518f271d6895586a3f966c284855e2e7de6da1bb06b85e8a87715fc2ee9449573db737814236a712226661f2b19f8b1295a3
data/README.md CHANGED
@@ -98,9 +98,6 @@ end
98
98
 
99
99
  ```
100
100
 
101
- Options:
102
- * server_command - command to create archive file
103
-
104
101
 
105
102
  # Databases
106
103
 
@@ -110,7 +107,7 @@ Options:
110
107
  * RemoteMySQL
111
108
 
112
109
 
113
- ### RemoteMySQL
110
+ ### Remote MySQL Database
114
111
 
115
112
  ```
116
113
  Model.new(:my_backup, 'My Backup') do
@@ -137,7 +134,7 @@ end
137
134
 
138
135
  * Run custom command on the remote server to create a backup archive
139
136
 
140
- * Specify command to run to generate archive file on the remote server
137
+ * Specify command (or script) to run to generate archive file on the remote server
141
138
 
142
139
  * This command should create an archive file with filename specified in server_path option.
143
140
 
@@ -152,12 +149,13 @@ Model.new(:my_server_data_backup, 'Backup data') do
152
149
 
153
150
 
154
151
  archive.command = "--any command to generate backup archive file--"
152
+ archive.script = "--path to script to copy to server and run--"
153
+ archive.server_path = "/path/to/backup.tar.gz"
154
+
155
+ # example:
156
+ # archive.command = "/tmp/backup.txt"
155
157
  # archive.command = "echo '1' > /tmp/backup.txt"
156
158
 
157
- archive.server_path = "/path/to/archive.tar.gz"
158
- # archive.command = "/tmp/backup.txt"
159
-
160
-
161
159
 
162
160
  end
163
161
 
@@ -167,8 +165,12 @@ end
167
165
 
168
166
  ```
169
167
 
168
+ Options:
169
+
170
+ * command - command to run to generate backup on server. Not used if script is specified.
171
+ * script - path to script file to upload and run on server to generate backup. Script is stored locally nad is uploaded to server.
172
+
173
+
174
+
170
175
 
171
- # Backup gem
172
- [Installation]: http://backup.github.io/backup/v4/installation
173
- [Release Notes]: http://backup.github.io/backup/v4/release-notes
174
- [Documentation]: http://backup.github.io/backup/v4
176
+ ### Examples
@@ -185,14 +185,9 @@ module Backup
185
185
  paths.each {|path| tmpfile.puts path }
186
186
  tmpfile.close
187
187
 
188
- puts "tmpfile #{tmpfile.path}"
189
-
190
- puts "content: #{File.read(tmpfile.path)}"
191
188
  #yield "-T '#{ tmpfile.path }'"
192
189
  yield "#{ tmpfile.path }"
193
190
  ensure
194
-
195
- puts "delete file #{tmpfile.path}"
196
191
  tmpfile.delete
197
192
  end
198
193
 
@@ -203,12 +198,7 @@ module Backup
203
198
  end
204
199
 
205
200
  def prepare_path(path)
206
-
207
- res = options[:root] ? path : File.expand_path(path)
208
-
209
- puts "path #{path} ===> #{res}"
210
-
211
- res
201
+ options[:root] ? path : File.expand_path(path)
212
202
  end
213
203
 
214
204
  def tar_options
@@ -23,6 +23,7 @@ module Backup
23
23
  attr_accessor :server_ssh_key
24
24
  attr_accessor :server_path
25
25
  attr_accessor :server_command
26
+ attr_accessor :script
26
27
 
27
28
 
28
29
 
@@ -47,6 +48,7 @@ module Backup
47
48
  self.server_ssh_password = @options[:server_ssh_password]
48
49
  self.server_path = @options[:server_path]
49
50
  self.server_command = @options[:server_command]
51
+ self.script = @options[:script]
50
52
  end
51
53
 
52
54
  def perform!
@@ -64,22 +66,46 @@ module Backup
64
66
 
65
67
  Dir.mktmpdir do |temp_dir|
66
68
  temp_local_file = File.join("#{temp_dir}", File.basename(server_path))
67
- #temp_local_file = File.join(path, File.basename(server_path))
68
- #temp_local_file = Tempfile.new("").path+"."+File.extname(server_path)
69
69
 
70
70
  remote_archive_file = server_path
71
71
 
72
72
  # generate backup on remote server
73
- cmd_remote = server_command
74
- res_generate = remote.run_ssh_cmd(
75
- server_host, server_ssh_user, server_ssh_password,
76
- cmd_remote)
73
+ remote_script = script
74
+
75
+ if remote_script && remote_script!=""
76
+ # use script
77
+ # upload script
78
+ local_script_path = File.join(Config.root_path, remote_script)
79
+
80
+ f_remote = Tempfile.new('backup')
81
+ remote_script_path = f_remote.path+"."+File.extname(local_script_path)
82
+
83
+ #puts "upload script #{local_script_path} --> #{remote_script_path}"
84
+ remote.ssh_upload_file(server_host, server_ssh_user, server_ssh_password, local_script_path, remote_script_path)
85
+
86
+ cmd_remote = "chmod +x #{remote_script_path} && sh #{remote_script_path}"
87
+ res_generate = remote.run_ssh_cmd(
88
+ server_host, server_ssh_user, server_ssh_password,
89
+ cmd_remote)
90
+
91
+ # delete temp script
92
+ cmd_delete = "rm -rf #{remote_script_path}"
93
+ res_delete = remote.run_ssh_cmd(server_host, server_ssh_user, server_ssh_password, cmd_delete)
94
+
95
+ else
96
+ # use command
97
+ cmd_remote = server_command
98
+ res_generate = remote.run_ssh_cmd(
99
+ server_host, server_ssh_user, server_ssh_password,
100
+ cmd_remote)
101
+ end
77
102
 
78
103
  if res_generate[:res]==0
79
104
  raise 'Cannot create backup on server'
80
105
  end
81
106
 
82
107
  # download backup
108
+ #puts "download from #{remote_archive_file} to #{temp_local_file}"
83
109
  res_download = remote.ssh_download_file(
84
110
  server_host, server_ssh_user, server_ssh_password,
85
111
  remote_archive_file, temp_local_file)
@@ -149,14 +175,10 @@ module Backup
149
175
  paths.each {|path| tmpfile.puts path }
150
176
  tmpfile.close
151
177
 
152
- puts "tmpfile #{tmpfile.path}"
153
-
154
- puts "content: #{File.read(tmpfile.path)}"
155
178
  #yield "-T '#{ tmpfile.path }'"
156
179
  yield "#{ tmpfile.path }"
157
180
  ensure
158
181
 
159
- puts "delete file #{tmpfile.path}"
160
182
  tmpfile.delete
161
183
  end
162
184
 
@@ -167,12 +189,7 @@ module Backup
167
189
  end
168
190
 
169
191
  def prepare_path(path)
170
-
171
- res = options[:root] ? path : File.expand_path(path)
172
-
173
- puts "path #{path} ===> #{res}"
174
-
175
- res
192
+ options[:root] ? path : File.expand_path(path)
176
193
  end
177
194
 
178
195
  def tar_options
@@ -207,6 +224,9 @@ module Backup
207
224
  def server_command=(val = true)
208
225
  @options[:server_command] = val
209
226
  end
227
+ def script=(val = true)
228
+ @options[:script] = val
229
+ end
210
230
  def server_path=(val = true)
211
231
  @options[:server_path] = val
212
232
  end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Backup
4
- VERSION = '0.0.5'
4
+ VERSION = '0.0.7'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backup-remote
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Ivak, Michael van Rooijen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-15 00:00:00.000000000 Z
11
+ date: 2016-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: CFPropertyList