qdumpfs 1.0.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4f23500798845b355c0218ddb9fe5245d18bc0fb206a948d272f379adba6f3e
4
- data.tar.gz: 1acc58713bd896da322648ac909bbbbd8359831c530e5f160d022d8091fa4adc
3
+ metadata.gz: d148306a793bd1f61a3ed05f115859f0bca1dcb44ff53c560e5e331f0aa24df0
4
+ data.tar.gz: 12ee6edac7b57c310a319c67edfe5c962c4c0a0e52d87976c0e0cd700061cb42
5
5
  SHA512:
6
- metadata.gz: 4e1d6c3155d669e9a17a199b8ea70749615fe116c496c166bc477036c66715814337d1cbb8db562236d5bed755ba3f21bc45600f5d5e2f070f5eb847f9275057
7
- data.tar.gz: 2a4deb71d95507c1ddba720899528874df09f0245b9a668a90aca5fd2d4d06472632ee2b5b1b7c78c1a6d5e894c4c77f21ffa09b1734350f2aff697568aede4c
6
+ metadata.gz: a0ebdf2405bba933b7df4eaf3e551d8f2c6024e5c91db085fb212a82f674290a47d3f64d9590fea78aa25a39cdeefeb03ce0897fcbfd19e8825838bc51954c13
7
+ data.tar.gz: 6235f457cc58b9323a2a8b366d62facfbddb1f12b54cf82ab15015e1ddf38514c228b4952a6d4a15804b3505c4ec012af3315ebd7bc2753d8a34468e8684e81a
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ test*.cmd
16
16
  /data/to2
17
17
 
18
18
 
19
+ /sync_d.cmd
data/Gemfile.lock CHANGED
@@ -1,23 +1,22 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qdumpfs (1.0.0)
4
+ qdumpfs (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- minitest (5.14.4)
10
- rake (13.0.3)
9
+ minitest (5.15.0)
10
+ rake (13.0.6)
11
11
 
12
12
  PLATFORMS
13
- ruby
14
- x64-mingw32
13
+ x86_64-darwin-21
15
14
 
16
15
  DEPENDENCIES
17
- bundler (~> 1.17)
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
- 1.17.2
22
+ 2.3.8
@@ -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
@@ -1,4 +1,4 @@
1
1
  module Qdumpfs
2
- VERSION = "1.0.0"
2
+ VERSION = "1.2.0"
3
3
  end
4
4
 
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[:ep] = v }
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
- wprintf("%s: %s", src, e.message)
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
- wprintf("%s: %s", s, e.message)
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", "~> 1.17"
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.0.0
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: 2021-04-07 00:00:00.000000000 Z
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: '1.17'
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: '1.17'
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.0.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: []