
フォルダをコピーして2つのサブディレクトリを除外しようとしていますが、rsyncは除外アイテム内のディレクトリをコピーし続けます。
rsync -savzPh -e "ssh -p 237" --include '*/' --include '*.pdf' --include '*.PDF' --exclude '*' --exclude 'a1' --exclude 'my archive2' user@ip:"/home/path/my folder" .
ソースは次のとおりです。
- /ホーム/パス/マイフォルダ/フォルダ1
- /ホーム/パス/マイフォルダ/folder2
- /ホーム/パス/マイフォルダ/a1
- /ホーム/パス/マイフォルダ/a2
- /ホーム/パス/マイフォルダ/マイアーカイブ
- /ホーム/パス/マイフォルダ/マイアーカイブ2
除外パラメータのフォルダにあるPDFファイルは引き続きコピーされます。
何が間違っているのか知っていますか?
答え1
Rsyncは、最初の一致に基づいて包含/除外ルールを解決します。あなたの場合、インクルードルールは、「除外」ルールを解析する前に、「除外」フォルダ(「a1」および「MyArchive2」)と一致します。
したがって、この場合は、包含/除外フラグの順序を異なる方法で指定する必要があります。
「My Folder」(「a1」および「My Archive 2」サブディレクトリを除く)の内容全体をコピーするには、次のコマンドを実行する必要があります。
rsync -savzPh -e "ssh -p 237" --exclude 'a1' --exclude 'my archive2' user@ip:"/home/path/my folder" .
そのディレクトリ構造(「a1」と「my archive2」を除く)にPDFファイルのみが必要な場合は、次の構造を試してください。
rsync -savzPh -e "ssh -p 237" --exclude 'a1' --exclude 'my archive2' --include '*.pdf' --include '*.PDF' --include '*/' --exclude '*' user@ip:"/home/path/my folder" .
2番目のバージョンでは、最初にフォルダを除いてそのフォルダをスキップしてからPDF拡張子とサブディレクトリを含め(それ以外の場合は、最後のルールのためにすべてのサブディレクトリをスキップし)、最後にすべてのコンテンツを除外します(その他)。
「含む」ルールを「除外されないもの」と考えますが、逆の順序で考えてみてください。
rsync 3.2.3を使用したテスト