Clarify directory pruning semantics and nested exclusion/inclusion rules

This commit is contained in:
Andrea Mazzoleni 2026-08-26 12:29:13 +02:00
parent 932b5e567e
commit 7b2007e503
42 changed files with 1315 additions and 0 deletions

View file

@ -1404,6 +1404,10 @@ syncプロセスで除外または含めるファイルまたはディレクト
パターンが一致しない場合、最後に指定されたパターンが \`include\` の場合はファイルは除外され、
\`exclude\` の場合は含まれます。
.PP
フィルタリングはディレクトリの走査時に階層的に実行されることに注意してください。
ディレクトリが \`exclude\` ルールに一致した場合、そのディレクトリ全体がスキップ(プルーニング)され、
その内部にあるファイルやサブディレクトリに対する \`include\` ルールは評価されません。
.PP
パターン仕様の詳細については、PATTERNセクションを参照してください。
.PP
このオプションは複数回使用できます。
@ -1987,6 +1991,44 @@ include /pictures/
.PD
.RE
.PP
ディレクトリを除外すると(DIR/ または /PATH/DIR/ を使用)、SnapRAID がそのディレクトリに入って
スキャンすることが防止されることに注意してください。したがって、除外された親ディレクトリ内に
存在するファイルやサブディレクトリを \`include\` ルールで再度含めることはできません(スキャナが
そのディレクトリ内を走査しないため)。
.PP
例えば、以下の設定では \`/keep/\` がプルーニングされるため、\`file.dat\` は含まれません:
.PP
.RS 4
# 意図通りに動作しません: /keep/ は完全にスキップされます
.PD 0
.PP
.PD
include /keep/file.dat
.PD 0
.PP
.PD
exclude /keep/
.PD 0
.PD
.RE
.PP
特定のファイルを残しつつディレクトリ内のファイルを一括除外するには、ディレクトリ自体を除外するのではなく、
ディレクトリ内のファイルパターンを除外してください:
.PP
.RS 4
# 意図通りに動作します: /keep/ は走査され、内部の他のファイルのみが除外されます
.PD 0
.PP
.PD
include /keep/file.dat
.PD 0
.PP
.PD
exclude /keep/*
.PD 0
.PD
.RE
.PP
コマンドラインで \-f オプションを使用する場合、\`include\` パターンのみを
使用できます。例:
.PP