次のモードでは、.pdfファイルをソースからターゲットにコピーし、正しく機能します。
rsync -rv --include="*.pdf" --include="*/" --exclude="*" --prune-empty-dirs /source/ ~/destination/
しかし、ファイル名にwebを含むファイルを除外したいのですが、うまくいかずにweb_profile.pdfファイルをコピー先にコピーしたいのですが、なぜこれが起こりますか?
rsync -rv --include="*.pdf" --include="*/" --exclude="*web*.pdf" --exclude="*" --prune-empty-dirs /source/ ~/destination/
**/
また、特定のディレクトリ(2つの星や1つの星など)を除外することは不明です。
誰かがrsyncのパターンマッチングに関する私の疑いを解決できますか?
--include="*.pdf"
match *pdf
、たとえば特定のディレクトリを除外するには../web-info/..pdf
どうすればよいですか?
ベストアンサー1
--include
オプションの順序--exclude
によって異なります。
すべてのファイルが最初に含まれるため、後で*.pdf
除外される内容は適用されません。また、包含/除外パターンは、パス名ではなくノード名(ファイル、ディレクトリなど)にも適用されます。ただし、パターンにまたはが*web*.pdf
ない場合、除外は除外されません。/
**
*web*.pdf
...web.../...pdf
一致するディレクトリの下のPDF以外のすべてのPDFが必要な場合は、*web*
次のようになります。
rsync -rv --exclude "*web*/" --include="*.pdf" --include="*/" --exclude="*" --prune-empty-dirs /source/ ~/destination/
*web*
これにより、rsyncが他のすべてのディレクトリを含むすべてのファイルを*.pdf
含み、他のすべてのファイルを除外する一致するディレクトリに繰り返されるのを防ぎます。
**
上記の解決策を好むが、パターンにaを使用することも効果があるかもしれません。
rsync -rv --exclude "**web*.pdf" --include="*.pdf" --include="*/" --exclude="*" --prune-empty-dirs /source/ ~/destination/