特定の拡張子 (*.sh) のファイルを rsync しようとしていますが、以下の bash スクリプトはまだすべてのファイルを転送しています。なぜですか?
from=/ホーム/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 ファイルを含む可能性のあるディレクトリをスキップしないための追加機能)
追加すべきこととして、少なくとも私のマシン (FreeBSD と OS X) では、これは機能しません:
rsync -aP --include=*/ --include=*.txt --exclude=* * /path/to/dest
しかし、これは:
rsync -aP --include=*/ --include=*.txt --exclude=* . /path/to/dest
はい、現在のディレクトリをワイルドカード化すると、除外が上書きされるようです。
--exclude=*を--exclude=*.*に変更する問題を修正しました。 *インクルード ファイルがあるフォルダーを除外することがわかりました。