まず同期する仕組みはrsyncを使います。Windows10上のWSLを利用すれば、U*IX系の各種ツールが利用できるため、Win32版rsyncなどを利用するよりも安心できます。rsyncを利用してファイルを同期することは、あまり苦労することもなく出来ました。
やっかいだったのが、除外対象を除いて同期させることです。rsyncで除外対象を指定するにはオプション「--exclude」を指定すればよいようなのですが、指定方法に癖があり、苦労している情報がWebには溢れています。Webで見つけた以下の情報を参考にしました。
最終的に期待する動作をするようになったのですが、うまくいかなかった原因はrsyncのオプションの指定方法ではなく、自作したシェルスクリプトの書き方の問題でした。
当初シェルスクリプトでは次のように書いていました。除外対象は今後増減する可能性がありますし、rsyncに指定するオプションは他にもあるので、それを分離したつもりでした。
EXC_OPTS="しかし期待した動作をしない原因は、この指定にあったようです。以下の書き方をすると、期待した動作をするようになりました。違いは、オプションの中でシングルクォートで括っているのを止めたことです。
--exclude='*.[eE][xX][eE]'
--exclude='*.[jJ][pP][gG]'
"
EXC_OPTS="この解決に至る過程で、rsyncのオプション「-vvv」を利用しました。文字「v」を増やすほど情報が増えるようです。そこに以下のような出力が現れているのが確認できます。除外対象が期待した通りに処理されていれば、このような出力になるはずです。うまく指定されていなければ、「because of pattern」という表示がなく、除外対象にしている筈なのに、なぜか同期対象とされてしまい、頭を捻ることになります。
--exclude=*.[eE][xX][eE]
--exclude=*.[jJ][pP][gG]
"
[sender] hiding file a/b/c/1.jpg because of pattern *.[jJ][pP][gG]問題の原因がわかってしまえば、至極当然なことと思えますが、解決できていないときには、五里霧中という気持ちになります。ともかく解決できて、一安心しました。
0 件のコメント:
コメントを投稿