qdumpfs 1.0.1 → 1.2.1

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: c7e95debed71b63b553da2ee5d9f4bb7828a855c1ed76a20188821fc507222f0
4
- data.tar.gz: 31272461b61233cc082f9b44370eb3304415ac8025b67d8a13900795ead68570
3
+ metadata.gz: 924f153cf5eae013f68a399286176976d01f1c78efd78804c72bdc89b5642248
4
+ data.tar.gz: a60cf9bf9d1d2a8ab43ae24f09f7675a61eae527017effac8af9544b493a953a
5
5
  SHA512:
6
- metadata.gz: 7419e48fea0c72b06d7c810ae22cf6c12f78aa4e9bcce21ffeeba176eafd039836169b178c0a13f892ca3834f687ea0a271b811311e6bf4904917a15a315ebf9
7
- data.tar.gz: 1e596cb96545f92477e8695fd77394aba619afc928176a2d0f505914c25d1215e1eeda648a7673d10794460ea4521cb93933fe1303313b08aa7660d25d8ccb2f
6
+ metadata.gz: 1ea65b4989549346110f8a6ce1b63b9dac4418cff1e0dabd8bb99fd2e6d16b1c57f2192ac917c7c6164083e6dfc87f2a7134aeba3d014f5727388be27fd7702d
7
+ data.tar.gz: c2ac5821044dc5ad45cacfca0fb63224bfd60a22bb1fd10a94586137ae798c853253079af69cd66df7ef4328ebfb381b35ddfe029c7271010caf7d4f4606ff4f
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.1)
4
+ qdumpfs (1.2.1)
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
@@ -152,6 +152,10 @@ module Qdumpfs
152
152
  attr_reader :logger, :matcher, :reporter, :interval_proc
153
153
  attr_reader :delete_from, :delete_to, :delete_dirs, :backup_at
154
154
  attr_reader :debug
155
+
156
+ def close
157
+ @logger.close
158
+ end
155
159
 
156
160
  def report(type, filename)
157
161
  if @opts[:v]
@@ -176,6 +180,11 @@ module Qdumpfs
176
180
  end
177
181
  log(msg)
178
182
  end
183
+
184
+ def report_error(filename, reason)
185
+ msg = sprintf("err_file\t%s\t%s\n", filename, reason)
186
+ log(msg)
187
+ end
179
188
 
180
189
  def log(msg, console = true)
181
190
  return if (msg.nil? || msg == '')
@@ -186,6 +195,10 @@ module Qdumpfs
186
195
  def dry_run
187
196
  @opts[:n]
188
197
  end
198
+
199
+ def verbose
200
+ @opts[:v]
201
+ end
189
202
 
190
203
  def limit_sec
191
204
  @limit.to_i * 3600
@@ -1,4 +1,4 @@
1
1
  module Qdumpfs
2
- VERSION = "1.0.1"
2
+ VERSION = "1.2.1"
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}"
@@ -70,7 +73,9 @@ module Qdumpfs
70
73
  p e.backtrace
71
74
  end
72
75
  puts opt.help
73
- exit
76
+ exit
77
+ ensure
78
+ option.close
74
79
  end
75
80
  end
76
81
 
@@ -100,9 +105,15 @@ module Qdumpfs
100
105
  def log_result(src, today, elapsed)
101
106
  time = Time.now.strftime("%Y-%m-%dT%H:%M:%S")
102
107
  bytes = convert_bytes(@written_bytes)
103
- msg = sprintf("%s: %s -> %s (in %.2f sec, %s written)\n",
104
- time, src, today, elapsed, bytes)
108
+ msg = sprintf("%s: %s -> %s (in %.2f sec, %s written)\n", time, src, today, elapsed, bytes)
105
109
  log(msg)
110
+ log("error files:\n")
111
+ i = 1
112
+ @error_files.each do |filename, reason|
113
+ msg = "#{i}. #{filename}\t#{reason}\n"
114
+ log(msg)
115
+ i += 1
116
+ end
106
117
  end
107
118
 
108
119
  def log(msg, console = true)
@@ -113,6 +124,10 @@ module Qdumpfs
113
124
  @opt.report(type, file_name)
114
125
  end
115
126
 
127
+ def report_error(file_name, reason)
128
+ @opt.report_error(file_name, reason)
129
+ end
130
+
116
131
  def update_file(src, latest, today)
117
132
  type = detect_type(src, latest)
118
133
  report(type, src)
@@ -180,7 +195,8 @@ module Qdumpfs
180
195
  update_file(s, l, t)
181
196
  dirs[t] = File.stat(s) if File.ftype(s) == "directory"
182
197
  rescue => e
183
- log("#{src}: #{e.message}")
198
+ report_error(s, e.message)
199
+ @error_files << [s, e.message]
184
200
  next
185
201
  end
186
202
  end
@@ -215,7 +231,8 @@ module Qdumpfs
215
231
  chown_if_root(type, s, t)
216
232
  dirs[t] = File.stat(s) if File.ftype(s) == "directory"
217
233
  rescue => e
218
- log("#{src}: #{e.message}")
234
+ report_error(s, e.message)
235
+ @error_files << [s, e.message]
219
236
  next
220
237
  end
221
238
  end
@@ -295,6 +312,7 @@ module Qdumpfs
295
312
  log("##### backup start #####")
296
313
 
297
314
  @written_bytes = 0
315
+ @error_files = []
298
316
  start_time = Time.now
299
317
  if @opt.backup_at
300
318
  start_time = to_time(@opt.backup_at)
@@ -351,6 +369,7 @@ module Qdumpfs
351
369
 
352
370
  start_time = Time.now
353
371
  @written_bytes = 0
372
+ @error_files = []
354
373
  src = @opt.src
355
374
  dst = @opt.dst
356
375
 
@@ -397,6 +416,10 @@ module Qdumpfs
397
416
 
398
417
  end_time = Time.now
399
418
  diff = time_diff(start_time, end_time)
419
+
420
+ elapsed = Time.now - start_time
421
+ log_result(src, dst, elapsed)
422
+
400
423
  log("##### sync end #{fmt(end_time)} diff=#{diff} last_sync_complete=#{last_sync_complete} #####")
401
424
  end
402
425
 
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.1
4
+ version: 1.2.1
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-10 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: []