qdumpfs 0.4.0 → 0.5.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: ceaa58593a1a92b6d0c9f2d76bd7ed5a75822c0452a2551781946ec73d8a6ad5
4
- data.tar.gz: caf81857a389d2a81094f167e8160195ab8c5fd107fbbef4387d7303a4e12a3b
3
+ metadata.gz: 3fe2d92b26abfc9df013c1affc9b3576ef4fe006d872909c8d7b637a6f9ca38a
4
+ data.tar.gz: 919639dab6b87bea4ffc1ea0da988e00e442abc49641f698001e2353a3bf0857
5
5
  SHA512:
6
- metadata.gz: 17439939c7fd6e82f8ad6a560d9faaf5d268c275e121c1939ddc574f0c99e3aba807fe301b282b226b19f2b676b3802bd8016c130ed2d95765380406fca91f1f
7
- data.tar.gz: 3f5f378da6ca8e0a4f3a9732227a099909bb15748066d64da7b10c642b66bb1a877d4262b29aa98cf5b44ae9b78bc6b5d0d806fe19fe99e9cb670b490509f7f0
6
+ metadata.gz: 44ccd6920a656c9f796a90832fe04fe1661da1ad492a22fe5661b8b2de7cd3d6b5294ba166f672fd02fcd6b49bc638c26e57db9689c3d5e403dd91425de85b0a
7
+ data.tar.gz: f9f037f8b506efb3b8b47b35bae102ca086c77c00feb360aec20bcea9adfc6de4555331aaf6dbaf24b98417530fd35aef2270f51646402df6e9fcabdbfb57afd
data/.gitignore CHANGED
@@ -11,4 +11,5 @@ list*
11
11
  log.txt
12
12
  *test.cmd
13
13
  test*.cmd
14
+ *.log
14
15
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qdumpfs (0.4.0)
4
+ qdumpfs (0.5.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -6,21 +6,56 @@ qdumpfs is a modified version of pdumpfs.
6
6
 
7
7
  gem install qdumpfs
8
8
 
9
- ```ruby
10
- gem 'qdumpfs'
9
+ ## Usage
10
+
11
+
12
+ ```
13
+ Usage: qdumpfs [options] <source> <dest>
14
+ -h, --help show this message
15
+ Options
16
+ -v, --verbose verbose message
17
+ -r, --report report message
18
+ -n, --dry-run don't actually run any commands
19
+ -e, --exclude=PATTERN exclude files/directories matching PATTERN
20
+ -s, --exclude-by-size=SIZE exclude files larger than SIZE
21
+ -w, --exclude-by-glob=GLOB exclude files matching GLOB
22
+ -c, --command=COMMAND backup|sync|list|expire|verify|test
23
+ -l, --limit=HOURS limit hours
24
+ -k, --keep=KEEPARG ex: --keep 100Y12M12W30D (100years, 12months, 12weeks, 30days, default)
11
25
  ```
12
26
 
13
- And then execute:
27
+ ## Example
14
28
 
15
- $ bundle
29
+ Backup your home directory, run the following command.
30
+ ```
31
+ qdumpfs /home/foo /backup
32
+ ```
16
33
 
17
- Or install it yourself as:
34
+ You can specify command option(default is "backup").
35
+ ```
36
+ qdumpfs --command=backup /home/foo /backup
37
+ ```
18
38
 
19
- $ gem install qdumpfs
39
+ Sync two backup directories.
40
+ ```
41
+ qdumpfs --command=sync /backup1 /backup2
42
+ ```
20
43
 
21
- ## Usage
44
+ Sync two backup directories(limit 1 hours, keep 100Y12M12W30D).
45
+ ```
46
+ qdumpfs --command=sync --limit=1 /backup1 /backup2
47
+ ```
48
+
49
+ Sync two backup directories(limit 1 hours, keep specified backups only).
50
+ ```
51
+ qdumpfs --command=sync --limit=1 --keep=5Y6M7W10D --keep/backup1 /backup2
52
+ ```
53
+
54
+ Expire backup directory.
55
+ ```
56
+ qdumpfs --command=expire --limit=1 --keep=5Y6M7W10D --keep/backup1 /backup2
57
+ ```
22
58
 
23
- qdumpfs srcdir dstdir
24
59
 
25
60
  ## License
26
61
 
@@ -19,8 +19,8 @@ module Qdumpfs
19
19
  opts = {}
20
20
  opt = OptionParser.new(argv)
21
21
  opt.version = VERSION
22
- opt.banner = "Usage: #{opt.program_name} [-h|--help]"
23
- opt.separator('')
22
+ opt.banner = "Usage: #{opt.program_name} [options] <source> <dest>"
23
+ opt.separator('Options')
24
24
  opt.on_head('-h', '--help', 'show this message') do |v|
25
25
  puts opt.help
26
26
  exit
@@ -34,24 +34,26 @@ module Qdumpfs
34
34
  }
35
35
  opt.on('-s SIZE', '--exclude-by-size=SIZE', 'exclude files larger than SIZE') {|v| opts[:es] = v }
36
36
  opt.on('-w GLOB', '--exclude-by-glob=GLOB', 'exclude files matching GLOB') {|v| opts[:ep] = v }
37
- commands = ['backup', 'sync', 'list', 'expire', 'verify', 'test']
37
+ commands = ['backup', 'sync', 'list', 'expire', 'verify']
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
-
42
-
41
+ opt.on('--logdir LOGDIR', 'logdir') {|v| opts[:logdir] = v}
43
42
  opt.parse!(argv)
44
43
  option = Option.new(opts, ARGV)
45
-
44
+ if opts[:v]
45
+ puts "<<<<< qdumpfs options >>>>> "
46
+ puts "logdir: #{option.logdir}"
47
+ puts "logpath: #{option.logpath}"
48
+ puts "verifypath: #{option.verifypath}"
49
+ puts
50
+ end
46
51
  begin
47
52
  command = Command.new(option)
48
53
  command.run
49
- rescue ArgumentError => e
50
- puts e.message, e.backtrace
51
- puts opt.help
52
- exit
53
54
  rescue => e
54
- puts e.message, e.backtrace
55
+ puts opt.help
56
+ exit
55
57
  end
56
58
  end
57
59
 
@@ -70,9 +72,9 @@ module Qdumpfs
70
72
  expire
71
73
  elsif @opt.cmd == 'verify'
72
74
  verify
73
- elsif @opt.cmd == 'test'
74
- test
75
- else
75
+ # elsif @opt.cmd == 'test'
76
+ # test
77
+ # else
76
78
  raise RuntimeError, "unknown command: #{cmd}"
77
79
  end
78
80
  end
@@ -394,15 +396,7 @@ module Qdumpfs
394
396
  diff = time_diff(start_time, end_time)
395
397
  log("##### sync end #{fmt(end_time)} diff=#{diff} last_sync_complete=#{last_sync_complete} #####")
396
398
  end
397
-
398
- def open_verify_file
399
- filename = File.join(@log_dir, 'verify.txt')
400
- if FileTest.file?(filename)
401
- File.unlink(filename)
402
- end
403
- File.open(filename, 'a')
404
- end
405
-
399
+
406
400
  def verify
407
401
  file = @opt.open_verifyfile
408
402
 
@@ -109,9 +109,9 @@ module Qdumpfs
109
109
  @cmd = @opts[:c] || 'backup'
110
110
 
111
111
  # @logger = NullLogger.new
112
- logfile = @opts[:logfile] || 'log.txt'
112
+ logfile = 'qdumpfs.log'
113
113
  #ログディレクトリの作成
114
- @logdir = File.expand_path('.')
114
+ @logdir = @opts[:logdir] || Dir.pwd
115
115
  Dir.mkdir(@logdir) unless FileTest.directory?(@logdir)
116
116
  @logpath = File.join(@logdir, logfile)
117
117
  @logger = SimpleLogger.new(@logpath)
@@ -143,7 +143,7 @@ module Qdumpfs
143
143
  end
144
144
  attr_reader :dirs, :src, :dst, :cmd
145
145
  attr_reader :keep_year, :keep_month, :keep_week, :keep_day
146
- attr_reader :logdir, :logfile, :verifyfile
146
+ attr_reader :logdir, :logpath, :verifypath
147
147
  attr_reader :logger, :matcher, :reporter, :interval_proc
148
148
 
149
149
  def report(type, filename)
@@ -1,3 +1,3 @@
1
1
  module Qdumpfs
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
File without changes
File without changes
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+
3
+ curdir=$(dirname $0)
4
+ bundle exec ruby $curdir/exe/qdumpfs $* ~/_qdumpfs/src ~/_qdumpfs/dst
5
+
6
+
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.4.0
4
+ version: 0.5.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-05-16 00:00:00.000000000 Z
11
+ date: 2020-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -91,6 +91,7 @@ files:
91
91
  - test_pdumpfs/data/foo
92
92
  - test_pdumpfs/data/secret/secret
93
93
  - test_pdumpfs/pdumpfs-test
94
+ - test_qdumpfs.sh
94
95
  homepage: https://github.com/src256/qdumpfs
95
96
  licenses:
96
97
  - MIT