qdumpfs 1.6.0 → 1.6.1

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: 1594429d5e80a9642960701f07ca24f2acc200fa7c7d5762f45d788f5efda0f1
4
- data.tar.gz: 954c39775382b64539ad80cebc613f09dddfd8c23feeaff5e9a9f153ad6dfd9c
3
+ metadata.gz: d2912844a928c79223f682ec29561480c360c45bdc18ee9590b6623bbe04d95d
4
+ data.tar.gz: 9dac9f189d8948cbebf0a929a01763557300ac676679667bea3d6f2e0a652969
5
5
  SHA512:
6
- metadata.gz: daa758f9b2486038f1fd668ae321af249606a4e836fe0223e28738f4c9011ff5a30dcbcb9b350e6e65873f37dea70d26cd7f0485277815eacba42fd1dc7043a2
7
- data.tar.gz: 10dbb763cf7e3969cc344d34ce42d70403fceee304b253ad055a250676b63c34c50cd1238e9684c404cfdff7f2dda272726615496e498235d34bc6b01d53eca5
6
+ metadata.gz: 6769d780454a153e62e455ded96760971d62b82533773b72b872165e6cd7ec8bb96f661f7e87652f543c6f5e3af5631597231f937a8a2b4f44d1011a58b2b6d9
7
+ data.tar.gz: 882a8b0d152355f900c8d48e02458a53c9c898dbd6ee1516b33383a54ba6e023b807e197b0a2b87578279e71a70255b31f4498bc5170e4edca5c7ec2eb5289cf
data/.gitignore CHANGED
@@ -11,10 +11,13 @@ list*
11
11
  log.txt
12
12
  *test.cmd
13
13
  test*.cmd
14
+ test*.sh
14
15
  *.log
15
16
  /data/to
16
17
  /data/to2
17
-
18
-
18
+ .idea/workspace.xml
19
+ .idea/tasks.xml
20
+ .idea/dataSources.xml
21
+ .idea/dataSources.local.xml
19
22
  /sync_d.cmd
20
- /test.
23
+ /test
data/.idea/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Editor-based HTTP Client requests
5
+ /httpRequests/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
9
+ # GitHub Copilot persisted chat sessions
10
+ /copilot/chatSessions
@@ -0,0 +1,16 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <profile version="1.0">
3
+ <option name="myName" value="Project Default" />
4
+ <inspection_tool class="RubyArgCount" enabled="false" level="ERROR" enabled_by_default="false" />
5
+ <inspection_tool class="RubyCaseWithoutElseBlockInspection" enabled="false" level="WARNING" enabled_by_default="false" />
6
+ <inspection_tool class="RubyTooManyInstanceVariablesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
7
+ <inspection_tool class="RubyTooManyMethodsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
8
+ <inspection_tool class="RubyUnnecessaryReturnStatement" enabled="false" level="WARNING" enabled_by_default="false" />
9
+ <inspection_tool class="RubyUnusedLocalVariable" enabled="false" level="WARNING" enabled_by_default="false" />
10
+ <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
11
+ <option name="processCode" value="true" />
12
+ <option name="processLiterals" value="true" />
13
+ <option name="processComments" value="true" />
14
+ </inspection_tool>
15
+ </profile>
16
+ </component>
data/.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="rbenv: 3.1.3" project-jdk-type="RUBY_SDK" />
4
+ </project>
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/qdumpfs.iml" filepath="$PROJECT_DIR$/.idea/qdumpfs.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
data/.idea/qdumpfs.iml ADDED
@@ -0,0 +1,91 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="ModuleRunConfigurationManager">
4
+ <shared />
5
+ </component>
6
+ <component name="NewModuleRootManager">
7
+ <content url="file://$MODULE_DIR$">
8
+ <sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
9
+ <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
10
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
11
+ <excludeFolder url="file://$MODULE_DIR$/.idea/copilot/chatSessions" />
12
+ </content>
13
+ <orderEntry type="inheritedJdk" />
14
+ <orderEntry type="sourceFolder" forTests="false" />
15
+ <orderEntry type="module-library">
16
+ <library name="minitest (v5.22.3) [path][gem]" type="rubylib">
17
+ <properties>
18
+ <option name="version" value="4" />
19
+ </properties>
20
+ <CLASSES>
21
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/minitest-5.22.3/lib" />
22
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/minitest-5.22.3/test" />
23
+ </CLASSES>
24
+ <JAVADOC />
25
+ <SOURCES>
26
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/minitest-5.22.3/lib" />
27
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/minitest-5.22.3/test" />
28
+ </SOURCES>
29
+ <excluded>
30
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/minitest-5.22.3/test" />
31
+ </excluded>
32
+ </library>
33
+ </orderEntry>
34
+ <orderEntry type="module-library">
35
+ <library name="rake (v13.1.0) [path][gem]" type="rubylib">
36
+ <properties>
37
+ <option name="version" value="4" />
38
+ </properties>
39
+ <CLASSES>
40
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/rake-13.1.0/doc" />
41
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/rake-13.1.0/exe" />
42
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/rake-13.1.0/lib" />
43
+ </CLASSES>
44
+ <JAVADOC />
45
+ <SOURCES>
46
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/rake-13.1.0/doc" />
47
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/rake-13.1.0/exe" />
48
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/rake-13.1.0/lib" />
49
+ </SOURCES>
50
+ <excluded>
51
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/rake-13.1.0/doc" />
52
+ <root url="file://$MODULE_DIR$/vendor/bundle/ruby/3.1.0/gems/rake-13.1.0/exe" />
53
+ </excluded>
54
+ </library>
55
+ </orderEntry>
56
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v2.4.20, rbenv: 3.1.3) [gem]" level="application" />
57
+ </component>
58
+ <component name="RakeTasksCache-v2">
59
+ <option name="myRootTask">
60
+ <RakeTaskImpl id="rake">
61
+ <subtasks>
62
+ <RakeTaskImpl description="Build qdumpfs-1.6.1.gem into the pkg directory" fullCommand="build" id="build" />
63
+ <RakeTaskImpl id="build">
64
+ <subtasks>
65
+ <RakeTaskImpl description="Generate SHA512 checksum if qdumpfs-1.6.1.gem into the checksums directory" fullCommand="build:checksum" id="checksum" />
66
+ </subtasks>
67
+ </RakeTaskImpl>
68
+ <RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
69
+ <RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
70
+ <RakeTaskImpl description="Build and install qdumpfs-1.6.1.gem into system gems" fullCommand="install" id="install" />
71
+ <RakeTaskImpl id="install">
72
+ <subtasks>
73
+ <RakeTaskImpl description="Build and install qdumpfs-1.6.1.gem into system gems without network access" fullCommand="install:local" id="local" />
74
+ </subtasks>
75
+ </RakeTaskImpl>
76
+ <RakeTaskImpl description="Create tag v1.6.1 and build and push qdumpfs-1.6.1.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
77
+ <RakeTaskImpl description="Run tests" fullCommand="test" id="test" />
78
+ <RakeTaskImpl description="" fullCommand="default" id="default" />
79
+ <RakeTaskImpl description="" fullCommand="release" id="release" />
80
+ <RakeTaskImpl id="release">
81
+ <subtasks>
82
+ <RakeTaskImpl description="" fullCommand="release:guard_clean" id="guard_clean" />
83
+ <RakeTaskImpl description="" fullCommand="release:rubygem_push" id="rubygem_push" />
84
+ <RakeTaskImpl description="" fullCommand="release:source_control_push" id="source_control_push" />
85
+ </subtasks>
86
+ </RakeTaskImpl>
87
+ </subtasks>
88
+ </RakeTaskImpl>
89
+ </option>
90
+ </component>
91
+ </module>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qdumpfs (1.6.0)
4
+ qdumpfs (1.6.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- minitest (5.19.0)
10
- rake (13.0.6)
9
+ minitest (5.22.3)
10
+ rake (13.1.0)
11
11
 
12
12
  PLATFORMS
13
13
  x64-mingw32
@@ -20,4 +20,4 @@ DEPENDENCIES
20
20
  rake (>= 12.3.3)
21
21
 
22
22
  BUNDLED WITH
23
- 2.2.33
23
+ 2.4.20
@@ -68,6 +68,7 @@ module Qdumpfs
68
68
  class NullMatcher
69
69
  def initialize(options = {})
70
70
  end
71
+ # @param [Object] path
71
72
  def exclude?(path)
72
73
  false
73
74
  end
data/lib/qdumpfs/util.rb CHANGED
@@ -35,7 +35,8 @@ class File
35
35
  begin
36
36
  File.unlink(dest) if File.anything_exist?(dest)
37
37
  File.symlink(src, dest)
38
- rescue
38
+ rescue
39
+ puts "force_symlink fails #{src} #{dest}"
39
40
  end
40
41
  end
41
42
 
@@ -65,10 +66,10 @@ module QdumpfsFind
65
66
  def find(logger, *paths)
66
67
  block_given? or return enum_for(__method__, *paths)
67
68
  paths.collect!{|d|
68
- raise Errno::ENOENT unless File.exist?(d);
69
+ raise Errno::ENOENT unless File.exist?(d)
69
70
  d.dup
70
71
  }
71
- while file = paths.shift
72
+ while (file = paths.shift)
72
73
  catch(:prune) do
73
74
  yield file.dup.taint
74
75
  begin
@@ -77,7 +78,7 @@ module QdumpfsFind
77
78
  logger.print("File.lstat path=#{file} error=#{e.message}")
78
79
  next
79
80
  end
80
- if s.directory? then
81
+ if s.directory?
81
82
  begin
82
83
  fs = Dir.entries(file, :encoding=>'UTF-8')
83
84
  rescue => e
@@ -120,8 +121,10 @@ module QdumpfsUtils
120
121
  end
121
122
  }
122
123
  }
123
- rescue EOFError => e
124
- # puts e.message, e.backtrace
124
+ rescue EOFError
125
+ # この実装だとファイルサイズがblock_sizeより小さい場合にEOFErrorが発生する
126
+ # それはしかたがないので無視する
127
+ # puts e.message
125
128
  end
126
129
  unless FileTest.file?(dest)
127
130
  raise "copy_file fails #{dest}"
@@ -194,7 +197,7 @@ module QdumpfsUtils
194
197
  type = "new_file"
195
198
  when "link"
196
199
  type = "symlink"
197
- end
200
+ end
198
201
  end
199
202
  end
200
203
  return type
@@ -1,4 +1,4 @@
1
1
  module Qdumpfs
2
- VERSION = "1.6.0"
2
+ VERSION = "1.6.1"
3
3
  end
4
4
 
data/lib/qdumpfs.rb CHANGED
@@ -182,16 +182,17 @@ module Qdumpfs
182
182
  # today: 差分バックアップ先ディレクトリ ex)j:/to/backup1/2019/05/10/home
183
183
  dirs = {};
184
184
  QdumpfsFind.find(@opt.logger, src) do |s| # path of the source file
185
- if @opt.matcher.exclude?(s)
186
- if File.lstat(s).directory? then Find.prune() else next end
187
- end
188
- # バックアップ元ファイルのパスからディレクトリ部分を削除
189
- r = make_relative_path(s, src)
190
- # 既存バックアップファイルのパス
191
- l = File.join(latest, r) # path of the latest snapshot
192
- # 新規バックアップファイルのパス
193
- t = File.join(today, r) # path of the today's snapshot
194
185
  begin
186
+ if @opt.matcher.exclude?(s)
187
+ if File.lstat(s).directory? then Find.prune else next end
188
+ end
189
+ # バックアップ元ファイルのパスからディレクトリ部分を削除
190
+ r = make_relative_path(s, src)
191
+ # 既存バックアップファイルのパス
192
+ l = File.join(latest, r) # path of the latest snapshot
193
+ # 新規バックアップファイルのパス
194
+ t = File.join(today, r) # path of the today's snapshot
195
+
195
196
  # ファイルのアップデート
196
197
  update_file(s, l, t)
197
198
  dirs[t] = File.stat(s) if File.ftype(s) == "directory"
@@ -208,12 +209,13 @@ module Qdumpfs
208
209
  def recursive_copy(src, dst)
209
210
  dirs = {}
210
211
  QdumpfsFind.find(@opt.logger, src) do |s|
211
- if @opt.matcher.exclude?(s)
212
- if File.lstat(s).directory? then Find.prune() else next end
213
- end
214
- r = make_relative_path(s, src)
215
- t = File.join(dst, r)
216
212
  begin
213
+ if @opt.matcher.exclude?(s)
214
+ if File.lstat(s).directory? then Find.prune else next end
215
+ end
216
+ r = make_relative_path(s, src)
217
+ t = File.join(dst, r)
218
+
217
219
  type = detect_type(s)
218
220
  report(type, s)
219
221
  next if @opt.dry_run
@@ -228,7 +230,7 @@ module Qdumpfs
228
230
  # just ignore it
229
231
  else
230
232
  raise "#{type}: shouldn't be reached here"
231
- end
233
+ end
232
234
  chown_if_root(type, s, t)
233
235
  dirs[t] = File.stat(s) if File.ftype(s) == "directory"
234
236
  rescue => e
@@ -424,7 +426,7 @@ module Qdumpfs
424
426
  file = @opt.open_verifyfile
425
427
 
426
428
  start_time = Time.now
427
- add_log("##### verify start #{fmt(start_time)} #####")
429
+ log("##### verify start #{fmt(start_time)} #####")
428
430
 
429
431
  src_count, dst_count = do_verify(src, dst)
430
432
 
@@ -435,7 +437,7 @@ module Qdumpfs
435
437
 
436
438
  end_time = Time.now
437
439
  diff = time_diff(start_time, end_time)
438
- add_log("##### list end #{fmt(end_time)} diff=#{diff} #####")
440
+ log("##### list end #{fmt(end_time)} diff=#{diff} #####")
439
441
 
440
442
  file.close
441
443
  end
data/test_qdumpfs.sh CHANGED
@@ -1,6 +1,5 @@
1
1
  #!/bin/sh
2
2
 
3
3
  curdir=$(dirname $0)
4
- bundle exec ruby $curdir/exe/qdumpfs $* ~/_qdumpfs/src ~/_qdumpfs/dst
5
-
6
-
4
+ #bundle exec ruby $curdir/exe/qdumpfs $* ~/_qdumpfs/src ~/_qdumpfs/dst
5
+ bundle exec ruby $curdir/exe/qdumpfs $* --exclude="/Users/sora/Documents/Virtual Machines.localized" /Users/sora /Volumes/qdumpfs/home
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.6.0
4
+ version: 1.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - src
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-21 00:00:00.000000000 Z
11
+ date: 2024-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -62,6 +62,12 @@ extensions: []
62
62
  extra_rdoc_files: []
63
63
  files:
64
64
  - ".gitignore"
65
+ - ".idea/.gitignore"
66
+ - ".idea/inspectionProfiles/Project_Default.xml"
67
+ - ".idea/misc.xml"
68
+ - ".idea/modules.xml"
69
+ - ".idea/qdumpfs.iml"
70
+ - ".idea/vcs.xml"
65
71
  - ".travis.yml"
66
72
  - ".vscode/settings.json"
67
73
  - CODE_OF_CONDUCT.md
@@ -121,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
127
  - !ruby/object:Gem::Version
122
128
  version: '0'
123
129
  requirements: []
124
- rubygems_version: 3.2.33
130
+ rubygems_version: 3.3.26
125
131
  signing_key:
126
132
  specification_version: 4
127
133
  summary: qdumpfs