Rsync 特定のモードであるが同じパスにある他のファイルは除外されます。

Rsync 特定のモードであるが同じパスにある他のファイルは除外されます。

その中にはたくさんのファイルがあります/dapp/parsD/parsapp/objectrsyncこのディレクトリ内の*と一致するファイルのみが必要です.sql、*.plそして*しかし、同じディレクトリで次に終わる2つの特定のパターンも除外したいと思います。

可能ですか?私は走っていますHP-UX11iソースとターゲットについて。rsyncバージョンは3.1.0

次の内容は想像しやすくなります。開発サーバーでは、X「または」X「は」に置き換えられます。D「または」D'、本番サーバーでは'「または」'。

次のファイルが含まれます。

/xapp/parsX/parsapp/object/*.sql
/xapp/parsX/parsapp/object/*.pl
/xapp/parsX/parsapp/object/*.sh

ただし、次のファイルは除外してください。

 /xapp/parsX/parsapp/object/getbackdate*autosys.sh
 /xapp/parsX/parsapp/object/parssendevent*.sh

ベストアンサー1

rsyncインクルード/除外/フィルタルールは使用するのが難しいかもしれませんが、非常に柔軟です。目的のタスクを実行する1つの方法は次のとおりです。

rsync --include-from=- /xapp/parsX/parsapp/object/ dest_dir <<EOF
- getbackdate*autosys.sh
- parssendevent*.sh
+ *.sql
+ *.pl
+ *.sh
- *
EOF

製造元--include-fromはからrsyncモードを読みますstdin。これを使用せずに、各モードを個別--includeまたは--excludeオプションとして指定できます。ルールをファイルに入れ、名前を付けたり読み取ったりするすべてのディレクトリでファイルを-F検索することもできますrsync.rsync-filter

また、パターンの順序も重要です。最初の一致パターンに基づいてファイルを含める/除外します。また、- *すべてがデフォルトで含まれているため、インクルードルールを機能させるには最後のルールが必要です。ただし、これは明示的に含まれていないすべてのディレクトリを除外するため、再帰転送の場合は問題になる可能性があります。この問題を解決する1つの方法は、+ **/すべてのディレクトリを含むルールを含めることです。

おすすめ記事