特定の拡張子(* .sh)のファイルをrsyncしようとしていますが、以下のbashスクリプトはまだすべてのファイルを転送します、なぜですか?
from =/home/xxx rsync -zvr --include = "*。sh" $ from/* root @ $ Host:/ home/tmp /
--exclude allを追加する必要があり、それは--includeの後に来る必要があります
rsync -zvr --include="*.sh" --exclude="*" $from/* root@$Host:/home/tmp/
--include
は、どのファイルを使用したくないかです--exclude
。あなたは将来の議論で何も除外していないので、効果はありません。できるよ:
from=/home/xxx
rsync -zvr --include="*.sh" --include="*/" --exclude="*" "$from" root@$Host:/home/tmp/
すべての.shファイルを再帰的にコピーするには(追加の--include
は、.shファイルを含む可能性のあるディレクトリをスキップしません)
-exclude = *を-exclude = *。*で変更する問題を修正しました。インクルードファイルがあるフォルダを除外することを理解しています。
追加することに関して、少なくとも私のマシン(FreeBSDとOS X)では、これはうまくいきません:
rsync -aP --include=*/ --include=*.txt --exclude=* * /path/to/dest
しかし、これはします:
rsync -aP --include=*/ --include=*.txt --exclude=* . /path/to/dest
はい、現在のディレクトリにワイルドカードを使用すると、除外が上書きされるようです。