rsync はまだ除外項目にフォルダをコピーします。

rsync はまだ除外項目にフォルダをコピーします。

フォルダをコピーして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を使用したテスト

おすすめ記事