qdumpfs 1.0.0 → 1.2.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +6 -7
- data/lib/qdumpfs/option.rb +9 -0
- data/lib/qdumpfs/version.rb +1 -1
- data/lib/qdumpfs.rb +26 -5
- data/qdumpfs.gemspec +1 -2
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d148306a793bd1f61a3ed05f115859f0bca1dcb44ff53c560e5e331f0aa24df0
|
4
|
+
data.tar.gz: 12ee6edac7b57c310a319c67edfe5c962c4c0a0e52d87976c0e0cd700061cb42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0ebdf2405bba933b7df4eaf3e551d8f2c6024e5c91db085fb212a82f674290a47d3f64d9590fea78aa25a39cdeefeb03ce0897fcbfd19e8825838bc51954c13
|
7
|
+
data.tar.gz: 6235f457cc58b9323a2a8b366d62facfbddb1f12b54cf82ab15015e1ddf38514c228b4952a6d4a15804b3505c4ec012af3315ebd7bc2753d8a34468e8684e81a
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,23 +1,22 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
qdumpfs (1.
|
4
|
+
qdumpfs (1.2.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
minitest (5.
|
10
|
-
rake (13.0.
|
9
|
+
minitest (5.15.0)
|
10
|
+
rake (13.0.6)
|
11
11
|
|
12
12
|
PLATFORMS
|
13
|
-
|
14
|
-
x64-mingw32
|
13
|
+
x86_64-darwin-21
|
15
14
|
|
16
15
|
DEPENDENCIES
|
17
|
-
bundler (~>
|
16
|
+
bundler (~> 2.0)
|
18
17
|
minitest (~> 5.0)
|
19
18
|
qdumpfs!
|
20
19
|
rake (>= 12.3.3)
|
21
20
|
|
22
21
|
BUNDLED WITH
|
23
|
-
|
22
|
+
2.3.8
|
data/lib/qdumpfs/option.rb
CHANGED
@@ -176,6 +176,11 @@ module Qdumpfs
|
|
176
176
|
end
|
177
177
|
log(msg)
|
178
178
|
end
|
179
|
+
|
180
|
+
def report_error(filename, reason)
|
181
|
+
msg = sprintf("err_file\t%s\t%s\n", filename, reason)
|
182
|
+
log(msg)
|
183
|
+
end
|
179
184
|
|
180
185
|
def log(msg, console = true)
|
181
186
|
return if (msg.nil? || msg == '')
|
@@ -186,6 +191,10 @@ module Qdumpfs
|
|
186
191
|
def dry_run
|
187
192
|
@opts[:n]
|
188
193
|
end
|
194
|
+
|
195
|
+
def verbose
|
196
|
+
@opts[:v]
|
197
|
+
end
|
189
198
|
|
190
199
|
def limit_sec
|
191
200
|
@limit.to_i * 3600
|
data/lib/qdumpfs/version.rb
CHANGED
data/lib/qdumpfs.rb
CHANGED
@@ -15,6 +15,7 @@ module Qdumpfs
|
|
15
15
|
include QdumpfsUtils
|
16
16
|
|
17
17
|
def self.run(argv)
|
18
|
+
args = argv.clone
|
18
19
|
STDOUT.sync = true
|
19
20
|
opts = {}
|
20
21
|
opt = OptionParser.new(argv)
|
@@ -33,7 +34,7 @@ module Qdumpfs
|
|
33
34
|
opts[:ep] << Regexp.new(v)
|
34
35
|
}
|
35
36
|
opt.on('-s SIZE', '--exclude-by-size=SIZE', 'exclude files larger than SIZE') {|v| opts[:es] = v }
|
36
|
-
opt.on('-w GLOB', '--exclude-by-glob=GLOB', 'exclude files matching GLOB') {|v| opts[:
|
37
|
+
opt.on('-w GLOB', '--exclude-by-glob=GLOB', 'exclude files matching GLOB') {|v| opts[:eg] = v }
|
37
38
|
commands = ['backup', 'sync', 'list', 'expire', 'verify', 'delete']
|
38
39
|
opt.on('-c COMMAND', '--command=COMMAND', commands, commands.join('|')) {|v| opts[:c] = v}
|
39
40
|
opt.on('-l HOURS', '--limit=HOURS', 'limit hours') {|v| opts[:limit] = v}
|
@@ -56,6 +57,8 @@ module Qdumpfs
|
|
56
57
|
option = Option.new(opts, argv)
|
57
58
|
if opts[:v]
|
58
59
|
puts "<<<<< qdumpfs options >>>>> "
|
60
|
+
args = args.join(' ')
|
61
|
+
puts "args: #{args}"
|
59
62
|
puts "logdir: #{option.logdir}"
|
60
63
|
puts "logpath: #{option.logpath}"
|
61
64
|
puts "verifypath: #{option.verifypath}"
|
@@ -100,9 +103,15 @@ module Qdumpfs
|
|
100
103
|
def log_result(src, today, elapsed)
|
101
104
|
time = Time.now.strftime("%Y-%m-%dT%H:%M:%S")
|
102
105
|
bytes = convert_bytes(@written_bytes)
|
103
|
-
msg = sprintf("%s: %s -> %s (in %.2f sec, %s written)\n",
|
104
|
-
time, src, today, elapsed, bytes)
|
106
|
+
msg = sprintf("%s: %s -> %s (in %.2f sec, %s written)\n", time, src, today, elapsed, bytes)
|
105
107
|
log(msg)
|
108
|
+
log("error files:\n")
|
109
|
+
i = 1
|
110
|
+
@error_files.each do |filename, reason|
|
111
|
+
msg = "#{i}. #{filename}\t#{reason}\n"
|
112
|
+
log(msg)
|
113
|
+
i += 1
|
114
|
+
end
|
106
115
|
end
|
107
116
|
|
108
117
|
def log(msg, console = true)
|
@@ -113,6 +122,10 @@ module Qdumpfs
|
|
113
122
|
@opt.report(type, file_name)
|
114
123
|
end
|
115
124
|
|
125
|
+
def report_error(file_name, reason)
|
126
|
+
@opt.report_error(file_name, reason)
|
127
|
+
end
|
128
|
+
|
116
129
|
def update_file(src, latest, today)
|
117
130
|
type = detect_type(src, latest)
|
118
131
|
report(type, src)
|
@@ -180,7 +193,8 @@ module Qdumpfs
|
|
180
193
|
update_file(s, l, t)
|
181
194
|
dirs[t] = File.stat(s) if File.ftype(s) == "directory"
|
182
195
|
rescue => e
|
183
|
-
|
196
|
+
report_error(s, e.message)
|
197
|
+
@error_files << [s, e.message]
|
184
198
|
next
|
185
199
|
end
|
186
200
|
end
|
@@ -215,7 +229,8 @@ module Qdumpfs
|
|
215
229
|
chown_if_root(type, s, t)
|
216
230
|
dirs[t] = File.stat(s) if File.ftype(s) == "directory"
|
217
231
|
rescue => e
|
218
|
-
|
232
|
+
report_error(s, e.message)
|
233
|
+
@error_files << [s, e.message]
|
219
234
|
next
|
220
235
|
end
|
221
236
|
end
|
@@ -295,6 +310,7 @@ module Qdumpfs
|
|
295
310
|
log("##### backup start #####")
|
296
311
|
|
297
312
|
@written_bytes = 0
|
313
|
+
@error_files = []
|
298
314
|
start_time = Time.now
|
299
315
|
if @opt.backup_at
|
300
316
|
start_time = to_time(@opt.backup_at)
|
@@ -351,6 +367,7 @@ module Qdumpfs
|
|
351
367
|
|
352
368
|
start_time = Time.now
|
353
369
|
@written_bytes = 0
|
370
|
+
@error_files = []
|
354
371
|
src = @opt.src
|
355
372
|
dst = @opt.dst
|
356
373
|
|
@@ -397,6 +414,10 @@ module Qdumpfs
|
|
397
414
|
|
398
415
|
end_time = Time.now
|
399
416
|
diff = time_diff(start_time, end_time)
|
417
|
+
|
418
|
+
elapsed = Time.now - start_time
|
419
|
+
log_result(src, dst, elapsed)
|
420
|
+
|
400
421
|
log("##### sync end #{fmt(end_time)} diff=#{diff} last_sync_complete=#{last_sync_complete} #####")
|
401
422
|
end
|
402
423
|
|
data/qdumpfs.gemspec
CHANGED
@@ -36,8 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
37
37
|
spec.require_paths = ["lib"]
|
38
38
|
|
39
|
-
spec.add_development_dependency "bundler", "~>
|
40
|
-
# spec.add_development_dependency "rake", "~> 10.0"
|
39
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
41
40
|
spec.add_development_dependency "rake", ">= 12.3.3"
|
42
41
|
spec.add_development_dependency "minitest", "~> 5.0"
|
43
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qdumpfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- src
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -105,7 +105,7 @@ metadata:
|
|
105
105
|
homepage_uri: https://github.com/src256/qdumpfs
|
106
106
|
source_code_uri: https://github.com/src256/qdumpfs
|
107
107
|
changelog_uri: https://github.com/src256/qdumpfs
|
108
|
-
post_install_message:
|
108
|
+
post_install_message:
|
109
109
|
rdoc_options: []
|
110
110
|
require_paths:
|
111
111
|
- lib
|
@@ -120,8 +120,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: '0'
|
122
122
|
requirements: []
|
123
|
-
rubygems_version: 3.
|
124
|
-
signing_key:
|
123
|
+
rubygems_version: 3.2.22
|
124
|
+
signing_key:
|
125
125
|
specification_version: 4
|
126
126
|
summary: qdumpfs
|
127
127
|
test_files: []
|