複数のプラットフォームでファイルを自働で同期する方法
以下の 3 種類のデバイスを使っています。
1. デスクトップ Win XP
2. ノートブック Win 7
3. ノートブック Mac OS 10.6 (できれば)
これらの機器で、あるフォルダ (とその中身) を同期したいと思います。
オンラインストレージには MobileMe の iDisk を使っています。
Mac 用の同期はできなくても OK です。
前提条件
Windows の場合はログイン時に bat ファイルで iDisk にログインして、
iDisk をネットワークドライブ z として割り当てています。
ログイン時にはすでに z:\ にネットワークドライブが割り当てられているものとして考えてください
(それ以外の方法で同期が実現できるのであればこの前提は無視してもOK)
必須条件
ログイン時、およびスクリプト/プログラム実行時にローカルとリモートが同一になること
同じファイルがある場合は更新日時の新しい方で同期されること
リモートにあってローカルにないファイルがあれば、ローカルにそのファイルをコピーする
ローカルにあってリモートにないファイルがあれば、リモートにそのファイルをコピーする
以上
質問があればコメント欄にどうぞ
コメント(8件)
mac でも動作すること
接続中のネットワークによって、ログイン時に自働で同期するかどうかが決められる
同期した結果 (更新、削除など) を表示したりログに残せたりすること
個人指名では回答拒否を設定していません。
理由はわかりませんが、1か月に20ユーザ以上に拒否されているなど、何かしらの理由があるのかもしれません。
今回はご縁がなかったということで。
svnで、できそうですね。
SVN subversionは履歴の管理ができますので、
間違って削除しても戻せます。
起動時、ログイン時の実行は
Windowsだとスタートアップ
OSXだと「システム環境設定」の「アカウント」「ログイン項目」から追加するようです。
どちらも自動化するのには多少なりともbatファイルなりapplescriptなりで数行書く必要がありますが、
同期には有用かと。
同期が目的なので subversion はちとやりすぎ感じがあります。
ほかに方法がなければ subversion を導入して勉強してみようと思います。
結構難しいですね。
んー。
Windowsの場合は標準で入っているxcopyコマンドで
ローカルからリモートにコピー オプションは /Dが必要かな。
リモートからローカルにコピー これも同様
iDiskに接続するbatに追加すればいけそうではありますね。
xcopyは結構便利です。
unix系だと、rsyncを使えばいいかと思いますが、
Windowsでもrsyncはあるみたいですが、
これは触ったこともないので自動化できるかがわからないです。
あ、OSXであればrsyncで大丈夫ですね。
どの方法も十分に試してからじゃないと、
大切なファイルがいなくなってしまうのが怖いところです。
なので、これをこう。ってお伝えできる自信がなくすいません。
質問をする前に robocopy を使ってみました。
こんな感じです。
net use Z: \\idisk.me.com\USERNAME /user:USERNAME "PASSWORD"
robocopy "C:\ローカル" "Z:\リモート" /E /XO /XA:SH
robocopy "Z:\リモート" "C:\ローカル" /E /XO /XA:SH
一応、どの条件でもファイルの削除は行われず、
常に新しいほうのファイルで上書きされるという動作ができたっぽいのですが、
間違っていたら怖いという点と、ほかに方法がたくさんあるだろうということで
あえてコマンドという縛りを設けずに質問をしてみました。
コマンドで実現する方法は別途質問をたててみます。
今回できれば iDisk でやりたいという事情があります。
でも Dropbox か Sugarsync も視野に入れて考えてみます。