web-dev-qa-db-ja.com

rsync --include-fromが機能しない

マニュアルページには、この例はありません。 rsyncに、それらのファイルの場所にあるファイルのみを含めるように指示するのは大変です。含めるために除外する必要がある理由、rsyncがインクルードファイルに含まれるものを含めない理由、それ以外のすべてが除外される理由がわかりません。

これは私のスクリプトです:

rsync -ruv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir remoteSrv:/tmp/.

これは機能しない私のインクルードファイルです。コピーが多すぎます。/usr2/subdir(奇妙なsubdirディレクトリを含む)のすべてのものをコピーします。 data/text_formsディレクトリ内のper、42f、およびxmlファイルのみをコピーします。

+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

以下は機能せず、何もコピーしません。

- *
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

また、以下も機能せず、何もコピーしません。

- *
+ data/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

また、以下も機能せず、何もコピーしません。

- *
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

以下も機能しません。

+ */
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *

次のいずれも機能しません。

+ /data/
+ /data/text_forms/
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *
3
Guasqueño

私は解決策を見つけました。それを見つけるのに丸2日かかった。これがあなたがそれほど多くの時間を費やさないのを助けることを願っています。

最初の問題は、/usr2/subdirのサブディレクトリsubdirが含まれていて、そのディレクトリ全体を含めることを望んでいなかったことです。ベースディレクトリにしたかったので、スラッシュが必要です。 /usr2/subdir/のように終了するため、新しいコマンドは次のようになります。

rsync -ruvv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir/ remoteSrv:/tmp/.

コマンドの実行時に除外または含まれるものの詳細を取得するために、コマンドラインにvオプションを追加したことに注意してください(-ruvv)。基本ディレクトリを修正し、余分なvを追加すると、正しいインクルードファイルを作成するのが少し簡単になりました。

+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
- *

+行はすべて、- *の前に配置する必要があります。特に、ディレクトリ内に直接ファイルを取得したくない場合でも、スキャンする各ディレクトリを明示的に含める必要があるためです。 data/anyTestFile1data/text_forms/anyTestFile2を追加するテストを行ったのは、それらがピックアップされるかどうかはわかりませんでしたが、そうではなかったので、私がやりたいことをやっているからです...最後に。

12
Guasqueño