なげやりろぐ

フテイキコウシン

 転ばぬ先の杖


って、もう思いっきり転んじゃったアトなので今さら感はあるけれど、バックアップの大切さを改めて感じたこの一週間でした。
システムのバックアップ環境を構築ついでに、Sleipnirの同期についてあれこれ試してみた。


現在Sleipnirはメインマシンと、別のHDDにインストールしてあるVista β2、そしてWebサーバと三者三様の設定を持ってインストールされている。
プラグインの管理に関しては、plugins.ini editorのおかげでどのマシンからも他のマシンの設定をいじれるようにはなった。
しかし、どうせならヒトツのマシンで集中管理できれば面倒なことはしないですむ。


現状の問題点をあげてみると

OSを移動してSleipnirを立ち上げるたびに、すでに読んだRSSのリストや記事とかが未読状態で現れる。
さらにはそのOSごとに記録したお気に入りやら履歴があるので、他のマシンで作業中に”あれ?ついさっき登録したはずのお気に入りがないなぁ〜”などといったアホをやらかす。(セッションの保存はそのOSごとの方がいい)
また、Sleipnirがマイナー、あるいはメジャーバージョンアップした際にすべてのOSで新たにバージョンアップのための作業を行わなければいけない。


Sleipnirの同期=最新環境へのバックアップともいえる。

と、いうことで希望の動作で同期のとれるアプリを探す旅に出かけた・・・


いや〜あるわあるわ、種類が多すぎてどれを使ったらいいやら。
とりあえずネットワーク越しの同期がとれるものじゃないと話にならないので、そのあたりを中心に検索。


実はすでにMicrosoft Powertoyの新作でSyncToy v1.2というヤツもすでにPCの中に入っていたのだが、これがまた多機能ではあるけれどインターフェースが使いにくいのと、Sleipnirの外部プログラムとして指定した設定だけの同期ができないことで、すでにHDDの肥やしと化してしまった。
最初に目についたのが、フォルダ内 ファイル属性比較&同期支援ツール1.3というヤツで、扱いはシンプルだけどやはり希望の動作はできない。サブフォルダまでチェックできないので単にお気に入り関係の同期をとるだけなら良さそうだけど・・・
あとはAllway Sync v4.6.7とかしっかり!バックアップ、フォルダ同期などなど・・・
いくつか試用してみたけど、シンプルすぎて思ったような同期方法が行えないものや多機能すぎて使い勝手が悪いものまで国産、海外製と6種類ほど試した中で、割とシンプルかつ必要十分な機能とSleipnirのユーザー定義ツールに引数を渡して登録できるものとして選んだのがDSync Ver1.73というヤツ。
かなりの間バージョンアップされていないのが不安要素だが、逆に考えればそれだけ枯れていて安定しているのかもしれない。

DSync Ver1.73を導入して設定をする



解凍して出てきたファイルは本体と簡単な使用説明テキストだけというシンプルさ。
これをフォルダごとProgram Files内に作ったFavorite_Appsフォルダの中に移動して起動してみる。

  • 初期画面


このProgramはレジストリを使用すると言うことなのでチェックしてみたら、最近使ったファイルの履歴と画面上のウインドウ位置を記録しているだけだった。


まず、同期に必要な設定を始めることにする。


  • メインマシンとサーバにあるSleipnirを同期をさせる設定例
起動したら左上の小窓のところを右クリックして、ココではとりあえず実行ファイルのあるbinに名前を変更
次に基本フォルダ(A)へメインマシンのbinフォルダを指定し、対象フォルダ(B)へサーバ上にあるbinフォルダを指定する
当然だが、事前にサーバ側のSleipnirインストールフォルダの共有設定を済ませ、フォルダへのアクセス権を変更可能かフルコントロールにしておく必要がある。

拡張子でのフィルタは環境によって適宜設定する。上書きされたら困るものなどはここで指定しておくといいが、拡張子だけでしか指定できないのがチョット厳しい。
同様にして同期をとりたいフォルダの条件とパスを次々と指定していく
各条件ごとにツールバーにあるボタンの状態も記憶されるので、完全同期にするか、サブフォルダも含めるかなどの条件を指定したのち、フロッピーアイコンをクリックして名前をつけて保存する。


ここまでできたら【>>】ボタンを押して同期の必要なファイルをリスト化する。リスト化は上記の各条件作成時にチェックの意味でその都度行っていてもかまわない。

赤字で表記されているのがメインマシンにあるファイルのタイムスタンプの方が新しい場合で、青字の方はサーバ側の方のファイルが新しいことを指す。
リストから個別に更新するファイルを指定することも可能だが、通常は【>>⊃】ボタンを押して一括で処理する。

【>>】ボタンで同期が必要なファイルをリスト化
この画面で赤いのはほとんどがFaviconのキャッシュだ
【>>⊃】ボタンを押すと確認メッセージが現れる(設定次第)
同期完了すると、文字が黒くなる
真ん中の記号の意味はメニューのヘルプで確認可能


なお、ファイル|基本対象の入れ替えで、各条件ごとにサーバ側からメインマシンを見た状態にすることも可能だけど、通常使用ではあまり意味はないかな。(完全同期の場合は基本の方が親になり、子がそれに従う)

Sleipnirのユーザー定義ツールに登録


ここからの操作はあらかじめSleipnirUserActionExtensionUserDefindToolsが導入されていることが前提。

DSyncの説明には、コマンドラインから設定ファイルと引数を指定することで同期を行ったアト自動終了させることができるとあった。
この機能に惹かれてこのアプリを導入したと言っても過言ではない。
で、Sleipnirのオプション画面から拡張機能|ユーザー定義ツールを呼び出して以下のようにアプリへのパスと引数を入れてクライアントを再起動後にキーボードショートカットにActionを設定してみた。



・・・しかし、なぜかうまくいかない。


普通にショートカットへ引数を登録してもダメ。UserActionExtensionユーザー定義ツールに引数を登録しても設定ファイルが見つかりませんとメッセージが出るばかり。
ファイル名を指定して実行でもダメ。


何でだろうと思いつつ、なぜかコマンドプロンプトからDSyncのディレクトリへ移動して実行するとうまくいく。
こりゃぁbatファイル作ってそれを指定した方がいいかなと思ったが、ここでチョット考えた。
ファイルのある場所へパスを通してやったらどうだろう・・・と。

そしたら一発で通りましたよまいったね。

  • パスを通したのでSleipnir側の表記も簡単になっちゃった。


  • アトはユーザーインタフェースのキーボートかマウスアクションかジェスチャのいずれかに登録してやればOK



上記の例ではSleipnirを起動中にAlt+sキーを押すことでDSyncが自動で立ち上がってサーバと同期をし、勝手に終了してくれる。
ただ、この方法には難点もあり、現在起動中のSleipnirが終了時に書き込むファイルまでは同期されない。
したがって、時々単独でDSyncを立ち上げて同期をとるか、あるいはバッチファイルを作成してユーザー定義ツールへあらたに登録しSleipnirを終了後にDSyncを起動させるようにした方がいいかもしれない。

  • バッチファイルの一例

taskkill /im Sleipnir.exe
start /min /wait /normal /d "C:\Program Files\My_FavoriteApps\File_Syncro_Apps\dsync173" DSync.exe Sleipnir.DSY /r /x
exit

startの/dスイッチ以降にダブルクォーテーションで実行ファイルまでのパスを記述し、そのアトに実行ファイル名と引数を指定してみた。画面上では改行されて見えるが一行での記述なので注意(コピペしてみればわかると思う)
なぜかXPでは/minスイッチが機能しない(コマンドのスイッチに用意されていないみたいだ)ので、batファイルのショートカットを作り、そちらのプロパティで最小化で起動させるようにしたらうまくいった。


あんまりスマートじゃないけれど、Sleipnirを終了後に同期が始まって勝手に終了してくれるようになった。
ただ、まだ疑問が・・・


Sleipnirに通常の終了処理をさせていないわけで・・・つまりタブの履歴等の書き込みまでちゃんとしてから終了しているかどうかはまだ未確認。



Taskkillの/fスイッチは使っていないけど、タスクマネージャからの強制終了と同じことだしねぇ・・・
AutoHotkeyかなんかで終了ボタンを押したのと同じことにするスクリプトを作った方がいいかもね。


ま、あとは不具合が起きてから考えることにするなりよ。



追記

その後、最初の方法でまた、設定ファイルが見つからないとか言う状態に陥った。
しょうがないのでショートカットを作り、そのプロパティでコマンドラインスイッチを指定して最小化の設定で保存。ショートカットへのフルパスをユーザー定義ツールに記述したところ問題は起きなくなった。
いったい何が関係しているのかさっぱり見当がつかない...orz


ま、だからPCはおもしろいんだけどね。

2006/08/22さらに追記

ユーザー定義ツール(UserDefindTools)とUserActionExtensionを取り違えていたため修正
失礼しましたぁ〜