/dapp/parsD/parsapp/object
にはたくさんのファイルがあります。 *。sql、*。plおよび*に一致するこのディレクトリ内のファイルのみをrsync
したい。shですが、同じディレクトリ内で。shで終わる2つの特定のパターンも除外したいと思います。
これは可能ですか?ソースと宛先の両方でHP-UX 11iを実行しています。 rsync
バージョンは3.1.0です。
以下は視覚化するのが簡単かもしれません。開発サーバーでは、「x」または「[〜#〜] x [〜#〜]」はに置き換えられます'd'または '[〜#〜] d [〜#〜]'であり、本番サーバーでは次のようになります。 'p'または '[〜#〜] p [〜#〜]'。
次のファイルを含めます。
/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
rsync
include/exclude/filterルールは扱いにくい場合がありますが、最終的には非常に柔軟です。これがあなたがやりたいことをする一つの方法です:
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つの方法は、すべてのディレクトリを含めるために+ **/
ルールを含めることです。