2008-01-25-01-バックアップと同期 - project-enigma

2008-01-25-01-バックアップと同期

>> Site top >> weblog >> 月別アーカイブ >> 2008年01月のlog >> 2008-01-25-01-バックアップと同期

最終更新日付:2014/01/01 18:03:36


バックアップと同期

2008 年 01 月 25 日

今日も Inside Japonica はお休み。

以前、SD カードリーダーと 2GB のカードを購入した話を書いた。理由はそのとき書いたとおりで、自宅と職場で参照・更新するメモ書きやソースコードを通勤途上でも Palm で操作したいからだ。

繰り返しになるが、これまで陰郎は、メモ書きなどは Palm 上のタスクやメモ帳で、ソースコードなどは USB メモリで管理していた。しかし、PIM データになっていると職場でイジり難い(職場では Palm デバイスの同期はしていないので)し、USB メモリ中のデータは移動中にイジれない。結果として、PIM データ中のテキストデータや USB メモリのデータなどをすべて SD カードに放り込み、PC ではカードリーダーを使用して、Palmでは Japonica や CardTXT を使用して参照・編集をする...というシフトチェンジをしてみたわけだ。

...なんて Japonica と CardTXT を並べて書いてしまうと、『 Japonica にエディタ機能まで載っけてしまえ 』 という妄想が去来したりもするのだが、それは今日書くことではない。そうではないのだ。問題は、SD カード内のデータへの依存性が高くなりすぎることのリスクである。だからこのエントリのタイトルは 「 バックアップと同期 」なのだ。

バックアップと一言でいっても、やはり日常的にこまめなバックアップを取らないと効果が薄い。重要なデータは頻繁に更新する。特に開発作業などではそうだ。だから数日前のデータはあっという間に陳腐化する。と、バックアップはこまめでなければ意味がない。前回も大容量化を嘆くようなことを書いたが、バックアップに時間がかかるととにかく億劫になる。カードを PC に接続して、ダブルクリックするだけで 『 変更されたファイルだけがコピーされて欲しい 』 わけだ。

まず、思いつくのは市販のバックアップソフトだ。しかし、それも大袈裟である。自分で組めないはずはない。陰郎が使用している PC にはどれも Cygwin が入っているので、ちょっとスクリプトを組んでやれば...などといって始めたわけだ。無知というのは恐いもので、結局 cp -R -u -v で大方の目的は達成できることに後になって気づく。この年になるまで -u というオプションは知らなかった。-u で新しいファイルと更新されたファイルだけをコピーするから、仕事が完了するまでの速度はかなり速い。これは便利だ。

しかし、これは一方通行のバックアップなので、カード上から削除したファイルがバックアップ先から消えるわけではない。つまり、バックアップ先にはファイルが堆積するから、完全にカード上と同期がとれるわけではないのだ。そのため、開発データなどは個別にカード上の「最新」ディレクトリと同期が取れていてほしい。当然 PC 上で作業する場合もあるから双方向の同期が取れる必要がある。誤って両側で編集してしまった場合にはコンフリクトを通知して手作業で解決するように促してほしい...まぁ、そんなことをしたかったわけだ。しかも手軽に。

同期の問題も、バックアップと同様に2つの選択肢がある。市販の同期ツールを購入して使用する方法と、自前で作ることだ。結局自作の道を選んだ。結局、自分の必要とする機能だけを実装できるし、自分のニーズに合わせて変更もできる。なにより、問題が起こっても人のせいにしないで済む。(笑

使用したのは、Cygwin のシェルコマンドと Perl だ。同期対象ディレクトリは「最終同期日時」だけを持っている。同期を取るたびに双方のディレクトリ配下の全ファイルの情報を作成し、Perl でイジりまくってどのファイルをコピーする必要があるか、必要があるとすればどちらが最新か、コンフリクト状態はどれか...などを判定し、必要なコピー処理を行うシェルスクリプトを作成して実行する。ただし、コンフリクトが検出された場合はシェルスクリプトは作成するが実行はしない。確認してから手作業で実行するのだ。

やってみてわかったのだが、多対多の同期は意外と難しい。陰郎の場合、SD カード1枚に対して、職場のPC、自宅のPC、自宅のノートパソコンという3環境と同期を取ることになる。すると、当然ながら同期対象の SD カードと PC 上のディレクトリで「最終同期日時」が一致しない場合がある。そのような場合には完璧な判定は難しい。それでもひとまず動作するようになったのでひと安心というところである。それでも同期を実行する前にはカードのバックアップをとっていたりするのだが。(汗

 

コメント

大野 一樹 - 01/26/2008 12:29:56 AM

陰郎さん、私も同じようなことをやっていますが、ふたごのハードディスク(FutaHDD)というソフトを使ってUSBと複数のPC上のファイルの同期を取っています。

色々探しましたが、これが私には合っていました。

もしよろしければ、お試し下さい。

陰郎 - 01/26/2008 12:28:52 PM

> 大野さん

やっぱり、誰しも考えることは同じですね。FutaHDD ですか。時間を見つけて試してみようかな...シェルでもスクリプトでもコンパイラでも、プログラミングをやる人間というのは「自分で作ったほうが手軽」などといいながら多大な時間を注ぎ込んだりするものです。年のせいか、新しいアプリの使い方を学ぶのが億劫で...なんていっていると加速的に老いていきそうなので気をつけなきゃ。(汗

このページにコメントする

 

このページのタグ

Page tag : 開発

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.