rsync のmanual の"Include/Exclude Pattern Rules" の日本語訳
原文: "Include/Exclude Pattern Rules" section in https://linux.die.net/man/1/rsync
+
、-
などのフィルター・ルールを使ってパターンを指定することで、ファイルをインクルードしたり、除外したりすることができます(上記の「フィルター・ルール」のセクションで紹介されています)。
include/excludeルールはそれぞれ、転送されるファイル名とマッチするパターンを指定します。
これらのパターンにはいくつかの形式があります:
- パターンが/で始まる場合は、ファイル階層の特定の場所に固定され、そうでない場合はパス名の末尾にマッチする。
これは正規表現における先頭の^に似ている。したがって、
/foo
は、トランスファーのroot(グローバルルールの場合)、またはマージファイルのディレクトリ(ディレクトリごとのルールの場合) のいずれかにあるfoo
の名前にマッチします。非限定foo
は、ツリー内のどこでもfoo
の名前にマッチする。これは、アルゴリズムがトップダウンで再帰的に適用されるためである。(訳注:パターン先頭の/
で)アンカーされていないsub/foo
であっても、foo
がsub
という名前のディレクトリの中で見つかった場合、階層内のどのポイントでもマッチする。 転送のルートでマッチするパターンを指定する方法の詳細については、ANCHORING INCLUDE/EXCLUDE PATTERNSのセクションを参照のこと。 - パターンが/で終わっている場合は、ディレクトリにのみマッチし、通常のファイル、シンボリックリンク、デバイスにはマッチしない。
- rsyncは単純な文字列マッチングを行うかワイルドカードマッチングを行うかを、パターンに
*
、?
、[
の3つのワイルドカード文字のいずれかが含まれているかどうかチェックして選択します。 - 単一の
*
はany path componentにマッチするが、スラッシュにマッチしない。 **
を使うとスラッシュを含むanythingにマッチする。?
はスラッシュ以外のany character (1文字) にマッチする。[
は文字クラス指定を開始する。[a-z]
や[[:alpha:]]
のような。- ワイルドカード・パターンでは、バックスラッシュはワイルドカード文字をエスケープするために使うことができるが、ワイルドカードが存在しない場合は文字通りにマッチする。
- パターンが / (末尾の / はカウントしない) または
**
を含む場合、先頭のディレクトリを含む完全なパス名に対してマッチされる。パターンに/
や**
が含まれていない場合は、ファイル名の最後のコンポーネントに対してのみマッチする。(このアルゴリズムは再帰的に適用されるので、full filename
は実際には開始ディレクトリから下のパスのどの部分にもなりうることを思い出してください)。 - 末尾に
dir_name/***
を指定すると、ディレクトリ(dir_name/
が指定されたかのように)とディレクトリ内のすべて(dir_name/**
が指定されたかのように)の両方にマッチします。この動作はバージョン2.6.7で追加された。