rsyncでexclude-fromファイルの中でexcludeしたいファイルの指定方法であまり正規化表現が指定できないので色々迷っていたが、https://futuremix.org/2011/02/rsyncが参考になった。ポイントは
-C(または–cvs-exclude) オプションを使うと CVS などバージョン管理システムの生成するファイルなどを自動的に除外してくれます。
これは CVS だけではなく、Subversion や .bak .exe などの拡張子を持つファイルも除外されます。具体的には
*~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o
*.obj *.so *.exe *.Z *.elc *.ln core .svn/
正規表現はあまり使えませんが、[0-9]
のような数値指定は可能です。
また * と ** も使用できます。** はディレクトリ区切りを超えてマッチします。この意味は **/.recycle/* とすると aaa/.recycle/* とも aaa/bbb/ccc/.recycle/* ともマッチするとのこと
なので私のexcludeファイルは(sambaのバックアップを取る時の指定)
/.Trash-0/
/lost+found/
/*/.recycle/
/**/cache/
/**/$RECYCLE.BIN/*
とした。