OneDriveとの同期を取るためのプログラムが大分良い感じになってきました。
OneDriveとのアクセスの方法は先日までの初級編〜上級編で一通り、あれこれが出来る様になったのは良いとして・・・
それはそれで、色々と問題が山積みになりましたよ。
ローカルの日付とOneDrive上の日付。
日付は更新日とか作成日になるけど、当然、クライアント側の更新日は、実際に更新した日。
鯖上の更新日は、あくまでアップロードした日付。
だから、鯖上のファイルが最新と勘違いして逆コピーを始めてしまう。
まぁ、同じファイルだけどね
そうすると、ローカル上の更新日が変更されてファイルの更新日が変わってしまう。
さっき、逆コピーって書いたけど、
複数箇所で同期を取るのであれば、新しく追加されたファイルを追加指定場所へダウンロードする必要がある。
それはそれとして、あくまでマスターはローカルにある何処かの場合、そう言った機能は不要になる。
複数箇所で同期したい物と、あくまでローカルが元で、それをバックアップ目的で上げるモノは大いに違う。
逆に余分なファイルは消さないといけなくなる。
コピーする目的により、複数のパターンが必要になり、オプションが沢山増えて、それに伴って必要なデータもかなり変わりました。
自動的に同期をするのであれば、定期的にファイルの更新が無いか調べなければならないし、
それってば結局は、通信量の増大に辺り、
鯖側のディレクトリ更新時におけるファイル一覧データの差異がとても気になるようになってきた。
初めは適当に、順にたどり治せば良いかと思っていたけど、深くなればなるほど、追うのが遅くなる。
影響が出る範囲を調べ上げて、その上で変更のある範囲だけ、ディレクトリ情報を更新して、ディレクトリの移動が遅くならないようにもしました。
とにかく、通信の削減と、検出の強化、
結局、コメントの所にXMLを埋め込むことにしましたよ?
今は未だ処理していないけど、元々有るコメントから、XMLだけ抜き出して、それだけ更新するように処理を入れないとダメだし、
周期的に実行する機能も作らないとダメだし、
色々と通信待ちをする場所が増えた関係で、ユーザーがいつ中断するか分からないので、中断に関連する処理をそこら中に入れなければ行けなくなったし、ほんと大変。
ローカル上で行っていたときのソースコードの倍を超えている感じですよ、
とても大変です。
でも、もうちょっとですね〜
頑張らないと! |