qdumpfs 1.8.0 → 1.8.2

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: 792c3be64fdf09f7cbbd7d7c13b9f6a036409ef2d58bedc327fdebc2882e3ad6
4
- data.tar.gz: b60880d94bb3b33ddadaa31d8a1f28326e5a730519d17094d023eb6d2e64cdc0
3
+ metadata.gz: fdc68ddb0a3016a375adc9e55b92547ea98f9bf1af05bc5fed20a6dbe8cb26e1
4
+ data.tar.gz: c20bd623f45e39e22c05dd5b7e314f0b24799d567a8d5ac21e94cf9b06e93400
5
5
  SHA512:
6
- metadata.gz: a14f12c1dd1a94f533b976793d8967383ac3a43cbea74861f682dd751b0bd6e0a3b12ef8f31afb9d739aadd33595fba91c63ce253c75ae2f4b4839961f829344
7
- data.tar.gz: 31f6c7ccf2bfc2b263573172a8cf7d5d67e62f46060f966f442411e60b9fcb9d50c0ebec69147908d3d2fe42c4a9ec4e2cfde66c1f5351136f87d2672b637588
6
+ metadata.gz: 2c57a00118b6da4621fd3037c217969819c12103d3540851ca3ee3ea6ae1592229ca9453285055a8171e229a9c3e165a017b291f402e2142b3f07cec7a27a6f3
7
+ data.tar.gz: 86bc15230254cb36a429d53dbb13f2e56a72b1f3cbf6caced5fbdf3c729c6bcf4720d4fd8ef9c009d95f32c66401fa4a70180d00da2820b7bc3626328ac43edf
data/.gitignore CHANGED
@@ -21,3 +21,4 @@ test*.sh
21
21
  .idea/dataSources.local.xml
22
22
  /sync_d.cmd
23
23
  /test
24
+ *.txt
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qdumpfs (1.8.0)
4
+ qdumpfs (1.8.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -13,6 +13,7 @@ PLATFORMS
13
13
  x64-mingw32
14
14
  x86_64-darwin-22
15
15
  x86_64-darwin-23
16
+ x86_64-darwin-24
16
17
 
17
18
  DEPENDENCIES
18
19
  bundler (~> 2.0)
data/README.md CHANGED
@@ -27,9 +27,12 @@ Options
27
27
 
28
28
  ## 実行例
29
29
 
30
+ ### バックアップ
30
31
 
31
32
  バックアップを実行する場合。
32
33
 
34
+ 「qdumpfs コピー元 コピー先」でバックアップを作成することができます。コピー先が存在する場合差分バックアップとなります。
35
+
33
36
  ```
34
37
  qdumpfs /home/foo /backup
35
38
  ```
@@ -40,31 +43,81 @@ qdumpfs /home/foo /backup
40
43
  qdumpfs --command=backup /home/foo /backup
41
44
  ```
42
45
 
43
- "--command sync"でバックアップフォルダを同期できます。
46
+ ### バックアップフォルダの同期
47
+
48
+ バックアップフォルダを同期することもできます。バックアップディスクが手狭になり、新しいディスクに移行したい場合に便利です。
49
+
50
+ "--command sync"オプションを指定することでバックアップフォルダを同期できます。
51
+
44
52
  ```
45
53
  qdumpfs --command=sync /backup1 /backup2
46
54
  ```
47
55
 
48
56
  バックアップフォルダの同期には膨大な時間が必要な場合があるため、実行時間を制限できます。以下は例えば1時間に制限する場合です。
57
+
58
+ 実行時間が1時間を超えるとそこで処理が終了しますそこから次回継続することができます。
59
+
49
60
  ```
50
61
  qdumpfs --command=sync --limit=1 /backup1 /backup2
51
62
  ```
52
63
 
53
- バックアップフォルダの同期で、1時間でかつ"100Y12M12W30D"を保存する場合のオプションです。
64
+ バックアップフォルダを間引きたい場合、"--keep="オプションを指定することができます。 "100Y12M12W30D"を指定すると、100年間は年に1つ、12ヶ月間は月に1つ、12週間は週に1つ、直近30日間のバックアップを保持します。
65
+ 条件に該当しないバックアップは同期されません。
66
+
54
67
  ```
55
68
  qdumpfs --command=sync --limit=1 --keep=5Y6M7W10D backup1 /backup2
56
69
  ```
57
70
 
71
+ バックアップの同期は、コピー先の最新の日付より新しいコピー元を選択して実行されます。これはバックアップの同期が途中で中断された場合、再開することができるようにするためです。
72
+ 例えばコピー先に2024/11/01のバックアップが存在する場合、コピー元の2024/11/01より後のバックアップデータ(例えば2024/11/02)があれば、それが同期されます(同じ日付は同期されません)。
73
+
74
+
75
+ ```
76
+
77
+
78
+ ### バックアップフォルダの削除
79
+
58
80
  "--command expire"で、"--keep="パターンに該当しないバックアップを削除できます。
59
81
  ```
60
82
  qdumpfs --command=expire --limit=1 --keep=5Y6M7W10D backup1 /backup2
61
83
  ```
62
84
 
85
+
86
+ ### バックアップフォルダから指定パターンを削除
87
+
63
88
  "--command delete"で、バックアップに存在する指定したパスを削除できます(間違えてバックアップした内容を削除したい場合などに使用)。
64
89
  ```
65
90
  qdumpfs --command=delete --delete-dir=backup1 --limit=1 r:/backup2
66
91
  ```
67
92
 
93
+ ### バックアップの比較
94
+
95
+ "--command verify"でバックアップを比較することができます。
96
+
97
+ ```
98
+ qdumpfs --command=verify j:/backup/2024/11/01 k:/backup/2024/11/01
99
+ ```
100
+
101
+ ### バックアップファイルの一覧
102
+
103
+ "--command list"でバックアップファイルを一覧表示することができます。
104
+
105
+ ```
106
+ qdumpfs --command=list j:/backup/2024/11/01
107
+ ```
108
+
109
+ 例えばverifyで異なる結果が表示された場合、listした結果をdiffすることができます。
110
+
111
+ ```
112
+ qdumpfs --command=list j:/backup/2024/11/01
113
+ qdumpfs --command=list k:/backup/2024/11/01
114
+ diff list_j__backup_2024_11_01.txt list_k__backup_2024_11_01.txt
115
+ ```
116
+
117
+
118
+
119
+
120
+
68
121
  ## License
69
122
 
70
123
  qdumpfs is a free software with ABSOLUTELY NO WARRANTY under the terms of the GNU General Public License version 2.
data/build.sh CHANGED
@@ -5,15 +5,21 @@ set -x
5
5
  #export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
6
6
 
7
7
  bundle_dir=./vendor/bundle
8
- if [ -d "$bundle_dir" ] ; then
8
+ bundle config --local path $bundle_dir
9
+
10
+ if [ "$1" = "clean" ]; then
11
+ echo "rm -rf $bundle_dir"
9
12
  /bin/rm -rf "$bundle_dir"
10
- bundle update
13
+ /bin/rm Gemfile.lock
14
+ exit 0
15
+ fi
16
+
17
+ if [ -d "$bundle_dir" ] ; then
18
+ echo "bunlde update"
19
+ bundle update
20
+ bundle clean
11
21
  else
22
+ echo "bundle install"
12
23
  /bin/rm -rf "$bundle_dir"
13
- bundle install --path "$bundle_dir"
24
+ bundle install
14
25
  fi
15
-
16
-
17
-
18
-
19
-
@@ -188,14 +188,20 @@ module Qdumpfs
188
188
  stat = File.stat(filename)
189
189
  size = stat.size
190
190
  msg = format_report(type, filename, size)
191
+ elsif type == 'symlink'
192
+ # symlinkの場合File.statでエラーが発生する場合があるので使わない。
193
+ msg = format_report(type, filename, 0)
191
194
  end
192
195
  end
193
196
  log(msg)
194
197
  end
195
198
 
196
- def report_error(filename, reason)
197
- msg = sprintf("err_file\t%s\t%s\n", filename, reason)
199
+ def report_error(filename, ex)
200
+ msg = sprintf("err_file\t%s\t%s\n", filename, ex.message)
198
201
  log(msg)
202
+ ex.backtrace.each do |line|
203
+ log(line)
204
+ end
199
205
  end
200
206
 
201
207
  def log(msg, console = true)
data/lib/qdumpfs/util.rb CHANGED
@@ -38,8 +38,9 @@ class File
38
38
  begin
39
39
  File.unlink(dest) if File.anything_exist?(dest)
40
40
  File.symlink(src, dest)
41
- rescue
42
- puts "force_symlink fails #{src} #{dest}"
41
+ rescue => e
42
+ puts "force_symlink fails #{src} #{dest} #{e.message}"
43
+ # puts "File.symlink('#{src}', '#{dest}')"
43
44
  end
44
45
  end
45
46
 
@@ -1,4 +1,4 @@
1
1
  module Qdumpfs
2
- VERSION = "1.8.0"
2
+ VERSION = "1.8.2"
3
3
  end
4
4
 
data/lib/qdumpfs.rb CHANGED
@@ -125,8 +125,8 @@ module Qdumpfs
125
125
  @opt.report(type, file_name)
126
126
  end
127
127
 
128
- def report_error(file_name, reason)
129
- @opt.report_error(file_name, reason)
128
+ def report_error(file_name, exception)
129
+ @opt.report_error(file_name, exception)
130
130
  end
131
131
 
132
132
  def update_file(src, latest, today)
@@ -197,7 +197,7 @@ module Qdumpfs
197
197
  update_file(s, l, t)
198
198
  dirs[t] = File.stat(s) if File.ftype(s) == "directory"
199
199
  rescue => e
200
- report_error(s, e.message)
200
+ report_error(s, e)
201
201
  @error_files << [s, e.message]
202
202
  next
203
203
  end
@@ -234,7 +234,7 @@ module Qdumpfs
234
234
  chown_if_root(type, s, t)
235
235
  dirs[t] = File.stat(s) if File.ftype(s) == "directory"
236
236
  rescue => e
237
- report_error(s, e.message)
237
+ report_error(s, e)
238
238
  @error_files << [s, e.message]
239
239
  next
240
240
  end
@@ -428,6 +428,8 @@ module Qdumpfs
428
428
  start_time = Time.now
429
429
  log("##### verify start #{fmt(start_time)} #####")
430
430
 
431
+ src = @opt.src
432
+ dst = @opt.dst
431
433
  src_count, dst_count = do_verify(src, dst)
432
434
 
433
435
  fputs(file, "#{src}: #{src_count}")
data/run2_qdumpfs.cmd CHANGED
@@ -1,6 +1,6 @@
1
1
  @echo off
2
2
 
3
- call uru 265p114
3
+ call uru system
4
4
 
5
5
  qdumpfs %*
6
6
 
data/run_list.cmd CHANGED
@@ -1,6 +1,6 @@
1
1
  @echo off
2
2
 
3
- call uru 265p114
3
+ call uru system
4
4
 
5
5
  bundle exec ruby exe/qdumpfs --command list n:/pc1/pdumpfs/test
6
6
 
data/run_qdumpfs.cmd CHANGED
@@ -1,5 +1,5 @@
1
1
  @echo off
2
2
 
3
- call uru 265p114
3
+ call uru system
4
4
 
5
5
  bundle exec ruby exe/qdumpfs %*
data/run_sync.cmd CHANGED
@@ -1,6 +1,6 @@
1
1
  @echo off
2
2
 
3
- call uru 306p216
3
+ call uru system
4
4
 
5
5
  bundle exec ruby exe/qdumpfs -d --command sync --keep=2Y0M0W0D r:/pc1/pdumpfs/opt v:/pc1/pdumpfs/opt
6
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: 1.8.0
4
+ version: 1.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - src
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-20 00:00:00.000000000 Z
11
+ date: 2024-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler