qdumpfs 1.8.1 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +7 -0
- data/lib/qdumpfs/option.rb +19 -7
- data/lib/qdumpfs/util.rb +2 -0
- data/lib/qdumpfs/version.rb +1 -1
- data/lib/qdumpfs.rb +6 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ceb1f25cb5025a606c5507c7184eb17464f38b21878cb233719348bd5aab369
|
4
|
+
data.tar.gz: 31370e10bda2e023e862b5e06d41f93c4c738a69c4146f3dfa3f2022ba4bd69c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5510e2e47588c732850e65a1dad47d6f90583d8ca946a0ce0b5318bf4941b753941d3d84cffcd1db3ee7d62de751dc05601165830618432101bcfe653df837c
|
7
|
+
data.tar.gz: 646d986c74e35668d1910405726acf19efd323a9c1f468f32bd2488e854a14904672cfd20306dc09f4f7e980f23fa76b26b2182dd22601b205e0da40ea39df85
|
data/Gemfile.lock
CHANGED
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="パターンに該当しないバックアップを削除できます。
|
data/lib/qdumpfs/option.rb
CHANGED
@@ -121,11 +121,17 @@ module Qdumpfs
|
|
121
121
|
@cmd = @opts[:c] || 'backup'
|
122
122
|
|
123
123
|
# @logger = NullLogger.new
|
124
|
-
|
125
|
-
|
126
|
-
|
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'
|
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,
|
197
|
-
msg = sprintf("err_file\t%s\t%s\n", filename,
|
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
data/lib/qdumpfs/version.rb
CHANGED
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,
|
129
|
-
@opt.report_error(file_name,
|
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
|
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
|
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.
|
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-
|
11
|
+
date: 2024-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|