web-dev-qa-db-ja.com

rsync --includeオプションは他のファイルを除外しません

特定の拡張子(* .sh)のファイルをrsyncしようとしていますが、以下のbashスクリプトはまだすべてのファイルを転送します、なぜですか?

 from =/home/xxx 
 rsync -zvr --include = "*。sh" $ from/* root @ $ Host:/ home/tmp /
22
user121196

--exclude allを追加する必要があり、それは--includeの後に来る必要があります

rsync -zvr --include="*.sh" --exclude="*" $from/*  root@$Host:/home/tmp/
19
JohnQ

--includeは、どのファイルを使用したくないかです--exclude。あなたは将来の議論で何も除外していないので、効果はありません。できるよ:

from=/home/xxx
rsync -zvr --include="*.sh" --include="*/" --exclude="*" "$from" root@$Host:/home/tmp/

すべての.shファイルを再帰的にコピーするには(追加の--includeは、.shファイルを含む可能性のあるディレクトリをスキップしません)

18
that other guy

-exclude = *-exclude = *。*で変更する問題を修正しました。インクルードファイルがあるフォルダを除外することを理解しています。

5
estevo

追加することに関して、少なくとも私のマシン(FreeBSDとOS X)では、これはうまくいきません:

rsync -aP --include=*/ --include=*.txt --exclude=* * /path/to/dest

しかし、これはします:

rsync -aP --include=*/ --include=*.txt --exclude=* . /path/to/dest

はい、現在のディレクトリにワイルドカードを使用すると、除外が上書きされるようです。

2
lbutlr