qdumpfs 0.6.0 → 0.7.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: 606cd6d5f9de57b340a1ac41d5e621d2f947cff5e1fce3a9ec510be72e0f0d4d
4
- data.tar.gz: 073da696b6e73cd8059a246fbe18b51f09050f100bb9f7a454954921d4e5d228
3
+ metadata.gz: 3d4d28c42fc54a4ba9ba806aa57c056774889663cfa011d1cb8ff6d259a3368b
4
+ data.tar.gz: fcfa95f0abdbaf1a8b571cf088fa83811e1984f4bd7bcd1283e68bdad3ce894b
5
5
  SHA512:
6
- metadata.gz: 34c7c309574b3cbd00175b0e327d1df5687fa2acb84fcb3d29ff5d77adeaacfddc5f91a28de702d0aaa06e0b694ea722d00d43ed50d7b7f74d80d2f754b1027c
7
- data.tar.gz: f5702a62c4b9ab44364df7c697c5d503ddccce6b946f2e7702de6783521aa05afa358df218686a90934a80af64906105068bb5cd0a77aa8fcacf597e56541436
6
+ metadata.gz: d1af10ef6521b9f775a538dc666e06f4cc4222131413144c8eacd59d795242890db306411e34076b041ac356b0a2e6a0c74c50cf221e01550caf0b18260bd738
7
+ data.tar.gz: 68351bac00ffe057beb25433f5d158c74814a2a20efa43cd15a8a608cc800f5655b6f41be2b1292e8ebc1b7b63e43f01add315daaa3503d047f4139e7dbf4848
data/.gitignore CHANGED
@@ -12,4 +12,7 @@ log.txt
12
12
  *test.cmd
13
13
  test*.cmd
14
14
  *.log
15
+ /data/to
16
+ /data/to2
17
+
15
18
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qdumpfs (0.6.0)
4
+ qdumpfs (0.7.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -0,0 +1 @@
1
+ 0
@@ -0,0 +1 @@
1
+ 1
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fileutils'
4
+ require "qdumpfs"
5
+
6
+ from = "./data/from"
7
+ to = "./data/to"
8
+ to2 = "./data/to2"
9
+
10
+ def create_dir(dir)
11
+ if FileTest.directory?(dir)
12
+ FileUtils.rm_rf(dir)
13
+ end
14
+ FileUtils.mkpath(dir)
15
+ end
16
+
17
+ create_dir(to)
18
+ create_dir(to2)
19
+
20
+
21
+ arg = ["--backup-at=20210119", from, to]
22
+ Qdumpfs::Command.run(arg)
23
+ arg = ["--backup-at=20210121", from, to]
24
+ Qdumpfs::Command.run(arg)
25
+ arg = ["--backup-at=20210122", from, to]
26
+ Qdumpfs::Command.run(arg)
27
+ arg = ["--backup-at=20210123", from, to]
28
+ Qdumpfs::Command.run(arg)
29
+ arg = ["--backup-at=20210124", from, to]
30
+ Qdumpfs::Command.run(arg)
31
+
32
+
33
+ arg = ["--backup-at=20210122", from, to2]
34
+ Qdumpfs::Command.run(arg)
35
+ arg = ["--backup-at=20210123", from, to2]
36
+
37
+ arg = ["--command=delete", "--delete-from=20210122", "--delete-to=20210123", "--limit=1", to, to2]
38
+ Qdumpfs::Command.run(arg)
39
+
40
+
@@ -38,15 +38,18 @@ module Qdumpfs
38
38
  opt.on('-c COMMAND', '--command=COMMAND', commands, commands.join('|')) {|v| opts[:c] = v}
39
39
  opt.on('-l HOURS', '--limit=HOURS', 'limit hours') {|v| opts[:limit] = v}
40
40
  opt.on('-k KEEPARG', '--keep=KEEPARG', 'ex: --keep 100Y12M12W30D (100years, 12months, 12weeks, 30days, default)') {|v| opts[:keep] = v}
41
- opt.on('--logdir LOGDIR', 'logdir') {|v| opts[:logdir] = v}
42
- opt.on('--delete-from YYYYMMDD', 'delete backup from YYYY/MM/DD') {|v|
41
+ opt.on('--logdir=LOGDIR', 'logdir') {|v| opts[:logdir] = v}
42
+ opt.on('--delete-from=YYYYMMDD', 'delete backup from YYYY/MM/DD') {|v|
43
43
  opts[:delete_from] = Date.parse(v)
44
44
  }
45
- opt.on('--delete-to YYYYMMDD', 'delete backup to YYYY/MM/DD') {|v|
45
+ opt.on('--delete-to=YYYYMMDD', 'delete backup to YYYY/MM/DD') {|v|
46
46
  opts[:delete_to] = Date.parse(v)
47
- }
47
+ }
48
+ opt.on('--backup-at=YYYYMMDD', 'backup at YYYY/MM/DD') {|v|
49
+ opts[:backup_at] = Date.parse(v)
50
+ }
48
51
  opt.parse!(argv)
49
- option = Option.new(opts, ARGV)
52
+ option = Option.new(opts, argv)
50
53
  if opts[:v]
51
54
  puts "<<<<< qdumpfs options >>>>> "
52
55
  puts "logdir: #{option.logdir}"
@@ -146,28 +149,28 @@ module Qdumpfs
146
149
  return src_count, dst_count
147
150
  end
148
151
 
149
- def get_snapshots(target_dir)
150
- # 指定したディレクトリに含まれるバックアップフォルダ(日付つき)を全て取得
151
- dd = "[0-9][0-9]"
152
- dddd = dd + dd
153
- # FIXME: Y10K problem.
154
- dirs = []
155
- glob_path = File.join(target_dir, dddd, dd, dd)
156
- Dir.glob(glob_path).sort.find {|dir|
157
- day, month, year = File.split_all(dir).reverse.map {|x| x.to_i }
158
- path = dir
159
- if File.directory?(path) and Date.valid_date?(year, month, day) and
160
- dirs << path
161
- end
162
- }
163
- dirs
164
- end
152
+ # def get_snapshots(target_dir)
153
+ # # 指定したディレクトリに含まれるバックアップフォルダ(日付つき)を全て取得
154
+ # dd = "[0-9][0-9]"
155
+ # dddd = dd + dd
156
+ # # FIXME: Y10K problem.
157
+ # dirs = []
158
+ # glob_path = File.join(target_dir, dddd, dd, dd)
159
+ # Dir.glob(glob_path).sort.find {|dir|
160
+ # day, month, year = File.split_all(dir).reverse.map {|x| x.to_i }
161
+ # path = diro
162
+ # if File.directory?(path) and Date.valid_date?(year, month, day) and
163
+ # dirs << path
164
+ # end
165
+ # }
166
+ # dirs
167
+ # end
165
168
 
166
- def get_snapshot_date(snapshot)
167
- # バックアップディレクトリのパス(日付つき)から日付を取得して返す
168
- day, month, year = File.split_all(snapshot).reverse.map {|x| x.to_i }
169
- Time.new(year, month, day)
170
- end
169
+ # def get_snapshot_date(snapshot)
170
+ # # バックアップディレクトリのパス(日付つき)から日付を取得して返す
171
+ # day, month, year = File.split_all(snapshot).reverse.map {|x| x.to_i }
172
+ # Time.new(year, month, day)
173
+ # end
171
174
 
172
175
  def update_snapshot(src, latest, today)
173
176
  # バックアップの差分コピーを実行
@@ -306,6 +309,9 @@ module Qdumpfs
306
309
 
307
310
  @written_bytes = 0
308
311
  start_time = Time.now
312
+ if @opt.backup_at
313
+ start_time = to_time(@opt.backup_at)
314
+ end
309
315
  src = @opt.src
310
316
  dst = @opt.dst
311
317
 
@@ -453,9 +459,9 @@ module Qdumpfs
453
459
  @opt.validate_directories(1)
454
460
 
455
461
  start_time = Time.now
462
+ p @opt.limit_sec
456
463
  limit_time = start_time + (@opt.limit_sec)
457
- log("##### #{cmd} start #{fmt(start_time)} => limit_time=#{fmt(limit_time)} #####")
458
-
464
+ log("##### #{cmd} delete-from=#{@opt.delete_from} delete-to=#{@opt.delete_to} start #{fmt(start_time)} => limit_time=#{fmt(limit_time)} #####")
459
465
  @opt.dirs.each do |target_dir|
460
466
 
461
467
  target_start = Time.now
@@ -140,14 +140,15 @@ module Qdumpfs
140
140
  @keep_week = $1.to_i if keep =~ /(\d+)W/
141
141
  @keep_day = $1.to_i if keep =~ /(\d+)D/
142
142
  @delete_from = @opts[:delete_from]
143
- @delete_to = @opts[:delete_to]
143
+ @delete_to = @opts[:delete_to]
144
+ @backup_at = @opts[:backup_at]
144
145
  @today = Date.today
145
146
  end
146
147
  attr_reader :dirs, :src, :dst, :cmd
147
148
  attr_reader :keep_year, :keep_month, :keep_week, :keep_day
148
149
  attr_reader :logdir, :logpath, :verifypath
149
150
  attr_reader :logger, :matcher, :reporter, :interval_proc
150
- attr_reader :delete_from, :delete_to
151
+ attr_reader :delete_from, :delete_to, :backup_at
151
152
 
152
153
  def report(type, filename)
153
154
  if @opts[:v]
@@ -217,14 +218,21 @@ module Qdumpfs
217
218
  end
218
219
 
219
220
  def detect_delete_dirs(backup_dirs, delete_from, delete_to)
221
+
220
222
  backup_dirs.each do |backup_dir|
221
223
  backup_dir.keep = true
222
- if delete_from && backup_dir.date >= delete_from && delete_to && backup_dir.date <= delete_to
223
- backup_dir.keep = false
224
- elsif delete_from && backup_dir.date >= delete_from
225
- backup_dir.keep = false
226
- elsif delete_to && backup_dir.date <= delete_to
227
- backup_dir.keep = false
224
+ if delete_from && delete_to
225
+ if backup_dir.date >= delete_from && backup_dir.date <= delete_to
226
+ backup_dir.keep = false
227
+ end
228
+ elsif delete_from
229
+ if backup_dir.date >= delete_from
230
+ backup_dir.keep = false
231
+ end
232
+ elsif delete_to
233
+ if backup_dir.date <= delete_to
234
+ backup_dir.keep = false
235
+ end
228
236
  end
229
237
  end
230
238
  end
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  def wprintf(format, *args)
2
3
  STDERR.printf("pdumpfs: " + format + "\n", *args)
3
4
  end
@@ -278,6 +279,10 @@ module QdumpfsUtils
278
279
 
279
280
  def to_unix_path(path)
280
281
  path.gsub(/\\/, '/')
281
- end
282
+ end
283
+
284
+ def to_time(date)
285
+ Time.local(date.year, date.month, date.day)
286
+ end
282
287
  end
283
288
 
@@ -1,3 +1,3 @@
1
1
  module Qdumpfs
2
- VERSION = "0.6.0"
2
+ VERSION = "0.7.0"
3
3
  end
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+
3
+ curdir=$(dirname $0)
4
+ bundle exec ruby $curdir/exe/sample
5
+
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: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - src
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-18 00:00:00.000000000 Z
11
+ date: 2021-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -57,6 +57,7 @@ email:
57
57
  - src@srcw.net
58
58
  executables:
59
59
  - qdumpfs
60
+ - sample
60
61
  extensions: []
61
62
  extra_rdoc_files: []
62
63
  files:
@@ -73,7 +74,10 @@ files:
73
74
  - bin/setup
74
75
  - build.cmd
75
76
  - build.sh
77
+ - data/from/0.txt
78
+ - data/from/a/1.txt
76
79
  - exe/qdumpfs
80
+ - exe/sample
77
81
  - lib/qdumpfs.rb
78
82
  - lib/qdumpfs/option.rb
79
83
  - lib/qdumpfs/util.rb
@@ -85,6 +89,7 @@ files:
85
89
  - run_qdumpfs.cmd
86
90
  - run_qdumpfs.sh
87
91
  - run_sync.cmd
92
+ - sample.sh
88
93
  - test_pdumpfs/data/bar
89
94
  - test_pdumpfs/data/baz/quux
90
95
  - test_pdumpfs/data/file