s3_meta_sync 0.11.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/s3_meta_sync.rb +2 -0
- data/lib/s3_meta_sync/syncer.rb +9 -1
- data/lib/s3_meta_sync/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '09f0ddb82b6163f8a53ff0ba9912bbd8225c3553'
|
4
|
+
data.tar.gz: 7e3062e0a16d5f1c76166bfdacd86621a4b0c48f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44432cf00d405f9ddaf94ea3376d0b8024237a43ce8fc0f97ad18c04e42ffe5387649dbecf22fd925625d42c9b477dd92aefe5c300872af91843fffb46dcc606
|
7
|
+
data.tar.gz: 8865b2d1ec3214bbcf3ac7e409aeaf7114b91d2a338eb40c3b10e06c96f0261fb159e6e84c34be582f39299911ed92cd93ff97b8f7bf526092027c8848c6ace5
|
data/lib/s3_meta_sync.rb
CHANGED
@@ -39,6 +39,8 @@ module S3MetaSync
|
|
39
39
|
opts.on("-s", "--secret SECRET", "AWS secret key") { |c| options[:secret] = c }
|
40
40
|
opts.on("-r", "--region REGION", "AWS region if not us-standard") { |c| options[:region] = c }
|
41
41
|
opts.on("-p", "--parallel COUNT", Integer, "Use COUNT threads for download/upload default: 10") { |c| options[:parallel] = c }
|
42
|
+
opts.on("-o", "--open-timeout TIMEOUT", Integer, "Net::HTTP open timeout in seconds default: 5") { |c| options[:open_timeout] = c }
|
43
|
+
opts.on("-t", "--read-timeout TIMEOUT", Integer, "Net::HTTP read timeout in seconds default: 10") { |c| options[:read_timeout] = c }
|
42
44
|
opts.on("--ssl-none", "Do not verify ssl certs") { options[:ssl_none] = true }
|
43
45
|
opts.on("-z", "--zip", "Zip when uploading to save bandwidth") { options[:zip] = true }
|
44
46
|
opts.on("--no-local-changes", "Do not md5 all the local files, they did not change") { options[:no_local_changes] = true }
|
data/lib/s3_meta_sync/syncer.rb
CHANGED
@@ -81,8 +81,10 @@ module S3MetaSync
|
|
81
81
|
store_meta(staging_area, remote_meta)
|
82
82
|
|
83
83
|
verify_integrity!(staging_area, destination, download, remote_meta[:files])
|
84
|
+
log "Swapping in directories #{destination} and #{staging_area}"
|
84
85
|
self.class.swap_in_directory(destination, staging_area)
|
85
86
|
FileUtils.mkdir(staging_area) # mktmpdir tries to remove this directory
|
87
|
+
log "Download finished"
|
86
88
|
end
|
87
89
|
end
|
88
90
|
end
|
@@ -129,6 +131,7 @@ module S3MetaSync
|
|
129
131
|
end
|
130
132
|
|
131
133
|
def verify_integrity!(staging_area, destination, changed, remote)
|
134
|
+
log "Verifying integrity of #{changed.size} files" if changed.size > 0
|
132
135
|
local = md5_hash(staging_area, changed)
|
133
136
|
corrupted = local.select { |file, md5| remote[file] != md5 }.map(&:first)
|
134
137
|
return if corrupted.empty?
|
@@ -180,6 +183,7 @@ module S3MetaSync
|
|
180
183
|
end
|
181
184
|
|
182
185
|
def delete_local_files(local, paths)
|
186
|
+
log "Delete #{paths.size} local files" if paths.size > 0
|
183
187
|
paths = paths.map { |path| "#{local}/#{path}" }
|
184
188
|
paths.each { |path| log "Deleting #{path}" }
|
185
189
|
FileUtils.rm_f(paths)
|
@@ -198,6 +202,7 @@ module S3MetaSync
|
|
198
202
|
end
|
199
203
|
|
200
204
|
def store_meta(source, meta)
|
205
|
+
log "Storing meta file"
|
201
206
|
file = "#{source}/#{META_FILE}"
|
202
207
|
FileUtils.mkdir_p(File.dirname(file))
|
203
208
|
File.write(file, meta.to_yaml)
|
@@ -262,12 +267,14 @@ module S3MetaSync
|
|
262
267
|
"https://s3#{"-#{region}" if region}.amazonaws.com/#{@bucket}/#{path}"
|
263
268
|
end
|
264
269
|
options = (@config[:ssl_none] ? {:ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE} : {})
|
270
|
+
options[:open_timeout] = @config.fetch(:open_timeout, 5) # 5 seconds
|
271
|
+
options[:read_timeout] = @config.fetch(:read_timeout, 10) # 10 seconds
|
265
272
|
retry_downloads(url: url) { open(url, options) }
|
266
273
|
end
|
267
274
|
|
268
275
|
def retry_downloads(url:)
|
269
276
|
yield
|
270
|
-
rescue OpenURI::HTTPError, Errno::ECONNRESET => e
|
277
|
+
rescue OpenURI::HTTPError, Errno::ECONNRESET, Errno::ETIMEDOUT, Net::OpenTimeout, Net::ReadTimeout => e
|
271
278
|
max_retries = @config[:max_retries] || 2
|
272
279
|
http_error_retries ||= 0
|
273
280
|
http_error_retries += 1
|
@@ -290,6 +297,7 @@ module S3MetaSync
|
|
290
297
|
end
|
291
298
|
|
292
299
|
def delete_empty_folders(destination)
|
300
|
+
log "Deleting empty folders"
|
293
301
|
`find #{destination} -depth -empty -delete`
|
294
302
|
end
|
295
303
|
|
data/lib/s3_meta_sync/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: s3_meta_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-core
|