qdumpfs 1.8.1 → 1.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84137d9c47fc2201cb2bfc18f8faaa470a3e019d0c17b88990c80e16964f0cbd
4
- data.tar.gz: abf643910675dca1d31b37eb621db10ba16b612cb3f8626c13a94d0c9b958519
3
+ metadata.gz: 7ceb1f25cb5025a606c5507c7184eb17464f38b21878cb233719348bd5aab369
4
+ data.tar.gz: 31370e10bda2e023e862b5e06d41f93c4c738a69c4146f3dfa3f2022ba4bd69c
5
5
  SHA512:
6
- metadata.gz: cec209e60e35e2d8f791b3fd7de687b148d53f3a17a7ffac0c6802b8808f3c3cbd1aa00b59e3d4951766e76f878bd6c7cef25587d1131485c1e9f7388e9f1b46
7
- data.tar.gz: 26f587244ecefe4198e52d6ebe6e2c33905dedf1d9df95a4e7a553aed9d1f725adce8337c40b9c7db52d263cf7a152c57e803fe8f65c1eeaea19f23b2947c7bf
6
+ metadata.gz: c5510e2e47588c732850e65a1dad47d6f90583d8ca946a0ce0b5318bf4941b753941d3d84cffcd1db3ee7d62de751dc05601165830618432101bcfe653df837c
7
+ data.tar.gz: 646d986c74e35668d1910405726acf19efd323a9c1f468f32bd2488e854a14904672cfd20306dc09f4f7e980f23fa76b26b2182dd22601b205e0da40ea39df85
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qdumpfs (1.8.1)
4
+ qdumpfs (1.9.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -68,6 +68,13 @@ qdumpfs --command=sync --limit=1 /backup1 /backup2
68
68
  qdumpfs --command=sync --limit=1 --keep=5Y6M7W10D backup1 /backup2
69
69
  ```
70
70
 
71
+ バックアップの同期は、コピー先の最新の日付より新しいコピー元を選択して実行されます。これはバックアップの同期が途中で中断された場合、再開することができるようにするためです。
72
+ 例えばコピー先に2024/11/01のバックアップが存在する場合、コピー元の2024/11/01より後のバックアップデータ(例えば2024/11/02)があれば、それが同期されます(同じ日付は同期されません)。
73
+
74
+
75
+ ```
76
+
77
+
71
78
  ### バックアップフォルダの削除
72
79
 
73
80
  "--command expire"で、"--keep="パターンに該当しないバックアップを削除できます。
@@ -121,11 +121,17 @@ module Qdumpfs
121
121
  @cmd = @opts[:c] || 'backup'
122
122
 
123
123
  # @logger = NullLogger.new
124
- logfile = 'qdumpfs.log'
125
- #ログディレクトリの作成
126
- @logdir = @opts[:logdir] || Dir.pwd
124
+ if @opts[:logpath]
125
+ @logpath = @opts[:logpath]
126
+ @logdir = File.dirname(@logpath)
127
+ else
128
+ logname = @opts[:logname] || 'qdumpfs.log'
129
+ #ログディレクトリの作成
130
+ @logdir = @opts[:logdir] || Dir.pwd
131
+ @logpath = File.join(@logdir, logname)
132
+ end
133
+
127
134
  Dir.mkdir(@logdir) unless FileTest.directory?(@logdir)
128
- @logpath = File.join(@logdir, logfile)
129
135
  @logger = SimpleLogger.new(@logpath)
130
136
 
131
137
  verifyfile = 'verify.txt'
@@ -184,18 +190,24 @@ module Qdumpfs
184
190
  end
185
191
  else
186
192
  # 何も指定されていない場合
187
- if type == 'new_file' || type == 'symlink'
193
+ if type == 'new_file'
188
194
  stat = File.stat(filename)
189
195
  size = stat.size
190
196
  msg = format_report(type, filename, size)
197
+ elsif type == 'symlink'
198
+ # symlinkの場合File.statでエラーが発生する場合があるので使わない。
199
+ msg = format_report(type, filename, 0)
191
200
  end
192
201
  end
193
202
  log(msg)
194
203
  end
195
204
 
196
- def report_error(filename, reason)
197
- msg = sprintf("err_file\t%s\t%s\n", filename, reason)
205
+ def report_error(filename, ex)
206
+ msg = sprintf("err_file\t%s\t%s\n", filename, ex.message)
198
207
  log(msg)
208
+ ex.backtrace.each do |line|
209
+ log(line)
210
+ end
199
211
  end
200
212
 
201
213
  def log(msg, console = true)
data/lib/qdumpfs/util.rb CHANGED
@@ -133,6 +133,8 @@ module QdumpfsUtils
133
133
  FileUtils.cp(src, dest)
134
134
  unless FileTest.file?(dest)
135
135
  raise "copy_file fails #{dest}"
136
+ else
137
+ @write_bytes += block.size
136
138
  end
137
139
  end
138
140
 
@@ -1,4 +1,4 @@
1
1
  module Qdumpfs
2
- VERSION = "1.8.1"
2
+ VERSION = "1.9.0"
3
3
  end
4
4
 
data/lib/qdumpfs.rb CHANGED
@@ -40,6 +40,8 @@ module Qdumpfs
40
40
  opt.on('-l HOURS', '--limit=HOURS', 'limit hours') {|v| opts[:limit] = v}
41
41
  opt.on('-k KEEPARG', '--keep=KEEPARG', 'ex: --keep 100Y12M12W30D (100years, 12months, 12weeks, 30days, default)') {|v| opts[:keep] = v}
42
42
  opt.on('--logdir=LOGDIR', 'logdir') {|v| opts[:logdir] = v}
43
+ opt.on('--logname=LOGNAME', 'logname') {|v| opts[:logname] = v}
44
+ opt.on('--logpath=LOGPATH', 'logpath') {|v| opts[:logpath] = v}
43
45
  opt.on('--delete-from=YYYYMMDD', 'delete backup from YYYY/MM/DD') {|v|
44
46
  opts[:delete_from] = Date.parse(v)
45
47
  }
@@ -125,8 +127,8 @@ module Qdumpfs
125
127
  @opt.report(type, file_name)
126
128
  end
127
129
 
128
- def report_error(file_name, reason)
129
- @opt.report_error(file_name, reason)
130
+ def report_error(file_name, exception)
131
+ @opt.report_error(file_name, exception)
130
132
  end
131
133
 
132
134
  def update_file(src, latest, today)
@@ -197,7 +199,7 @@ module Qdumpfs
197
199
  update_file(s, l, t)
198
200
  dirs[t] = File.stat(s) if File.ftype(s) == "directory"
199
201
  rescue => e
200
- report_error(s, e.message)
202
+ report_error(s, e)
201
203
  @error_files << [s, e.message]
202
204
  next
203
205
  end
@@ -234,7 +236,7 @@ module Qdumpfs
234
236
  chown_if_root(type, s, t)
235
237
  dirs[t] = File.stat(s) if File.ftype(s) == "directory"
236
238
  rescue => e
237
- report_error(s, e.message)
239
+ report_error(s, e)
238
240
  @error_files << [s, e.message]
239
241
  next
240
242
  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.8.1
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - src
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-11-06 00:00:00.000000000 Z
11
+ date: 2024-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler