自前のDropboxを実現する1ファイルのシェルスクリプト「vbox」 – MOONGIFT|オープンソース・ソフトウェア紹介を軸としたITエンジニア、Webデザイナー向けブログ
http://www.moongift.jp/2011/08/20110802-2/
早速使ってみたよ。以下の構成で試してみた。
| 機種(OS) | ホスト名 | |
|---|---|---|
| サーバー | Mac mini | remora.cx |
| クライアント 1 | Macbook Air | remora-air2 |
| クライアント 2 | ホスト 1 上の Windows XP | remora-air-win |
サーバー(Mac mini)の設定
作業用フォルダの作成
remora.cx $ mkdir -p ~/.vbox/data
クライアント 1(Macbook Air)の設定
スクリプトを git でダウンロード
git は homebrew とか Macports でインストールしてね。
最速で Git を Mac にインストールして基本的なコマンドを使う方法 | ウェブル
http://weble.org/2011/02/14/git-mac-installhomebrew でパッケージを管理する – えこ日記
http://d.hatena.ne.jp/eco31/20101213/1292166727
remora-air $ mkdir ~/git remora-air $ cd ~/git remora-air $ git clone https://github.com/vbox/vbox
スクリプトをコピーし、作業用フォルダを作る。
remora-air $ mkdir -p ~/bin/vbox remora-air $ cp ~/git/vbox/vboxd.sh ~/bin remora-air $ chmod +x ~/bin/vboxd.sh
同期するフォルダを作成。
remora-air $ mkdir ~/vbox
スクリプトの修正
~/bin/vboxd.sh を次のように修正した。
HOST="[email protected]" # ユーザー名@サーバーのホスト名 SOPDIR="/Users/delphinus/.vbox" # サーバーに作成した作業用フォルダ FOLDER="/Users/delphinus/vbox" # クライアントに作成した同期するフォルダ OPDIR="/Users/delphinus/bin/vbox" # クライアントに作成した作業用フォルダ PCNAME=`hostname -s` # クライアントのホスト名 GREP="/usr/bin/grep" # grep のフルパス
番外:ssh のログイン設定
vbox はサーバーに公開鍵暗号方式で接続することを前提としている。使用するアカウントの設定を事前に済ませておくこと。
[ SSH ] 公開鍵認証を使って、パスワード入力の手間を省く | Bowz::Notebook
http://bowz.info/?p=2419
パスフレーズはなしにしておかないと、同期の度に入力を要求されてめんどくさいと思う。多分。
実行!
では実際に実行してみよう。同期するフォルダにファイルを突っ込んでスクリプトを実行してみる。
remora-air $ cp ~/test.txt ~/vbox
remora-air $ ~/bin/vboxd.sh
LOCK RETURNED
NO LOCK FOUND, CONTINUE
/Users/delphinus/bin/vboxd.sh: line 97: /Users/delphinus/bin/vbox/.tmp1: No such file or directory
/Users/delphinus/bin/vboxd.sh: line 99: [: 0: unary operator expected
processing queue for remora-air2
cat: /Users/delphinus/.vbox/.vbox.remora-air2: No such file or directory
im now here /Users/delphinus/vbox
cat: /Users/delphinus/.vbox/.vbox.names: No such file or directory
building file list ...
2 files to consider
./
test.txt
2112 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)
sent 1086 bytes received 48 bytes 453.60 bytes/sec
total size is 2112 speedup is 1.86
receiving file list ...
2 files to consider
sent 20 bytes received 98 bytes 47.20 bytes/sec
total size is 2112 speedup is 17.90
DELETING LOCK
なんか色々とエラーが出るが問題なく完了した。サーバーにログインすると確かにコピーされている。
remora.cx $ ls -l ~/.vbox/data total 8 -rw-r--r-- 1 delphinus staff 2112 8 3 08:56 test.txt
クライアント 2(Windows XP)の設定
番外:cygwin の設定
Windows に Cygwin バージョン 1.7 をインストール
http://kkaneko.com/rinkou/cygwin/cygwin.html
スクリプトを動かすためには Windows 上に cygwin 環境を構築する必要がある。
以下の必要なパッケージは標準ではインストールされないので個別にインストールしておくこと。
git openssl rsync
Mac の時と同じように公開鍵暗号方式でサーバーにアクセスできるようにもしておこう。
スクリプトのダウンロードをフォルダの作成
ここら辺は Mac でやったときとほとんど一緒である。なんか git の時にエラーが出たので無理矢理通したよ。
remora-air-win $ mkdir ~/git remora-air-win $ cd ~/git remora-air-win $ GIT_SSL_NO_VERIFY=true git clone https://github.com/vbox/vbox remora-air-win $ mkdir -p ~/bin/vbox remora-air-win $ cp ~/git/vbox/vboxd.sh ~/bin remora-air-win $ chmod +x ~/bin/vboxd.sh remora-air-win $ mkdir /cygdrive/c/vbox
git cloneしようとしたらSSLの認証エラー – oTheRwoRld
http://d.hatena.ne.jp/otherworld/20110712/1310467750
同期するフォルダは C:\vbox にしてみた。
スクリプトの修正
これも、若干違うがほとんど一緒。
HOST="[email protected]" # ユーザー名@サーバーのホスト名 SOPDIR="/Users/delphinus/.vbox" # サーバーに作成した作業用フォルダ FOLDER="/cygdrive/c/vbox" # クライアントに作成した同期するフォルダ OPDIR="/home/delphinus/bin/vbox" # クライアントに作成した作業用フォルダ PCNAME=`hostname` # クライアントのホスト名 GREP="/usr/bin/grep" # grep のフルパス
実行!
remora-air-win $ ~/bin/vboxd.sh
LOCK RETURNED
NO LOCK FOUND, CONTINUE
/home/delphinus/bin/vboxd.sh: line 97: /home/delphinus/bin/vbox/.tmp1: No such file or directory
/home/delphinus/bin/vboxd.sh: line 99: [: 0: unary operator expected
processing queue for remora-air-win
cat: /Users/delphinus/.vbox/.vbox.remora-air-win: No such file or directory
im now here /cygdrive/c/vbox
building file list ...
1 file to consider
./
sent 83 bytes received 26 bytes 72.67 bytes/sec
total size is 0 speedup is 0.00
receiving file list ...
2 files to consider
test.txt
2112 100% 2.01MB/s 0:00:00 (xfer#1, to-check=0/2)
sent 42 bytes received 1088 bytes 452.00 bytes/sec
total size is 2112 speedup is 1.87
DELETING LOCK
またもやなんかエラーが出たが無事に終了。コピーもちゃんとできてるみたい。
remora-air-win $ ls -l /cygdrive/c/vbox total 4 -rw-r--r--+ 1 delphinus なし 2112 Aug 3 08:56 test.txt
まとめ
セットアップはちとめんどくさいが、動作原理は単純なだけに問題も少ないだろう。
最も、単純すぎてエラーチェックなどもあんまりしてないんでそこんとこは注意。スクリプトを Control+C で強制終了させるとロックファイルがサーバーに残ってしまって二度と起動しなかったよ! せめてロックファイルを削除するオプションくらいつけた方がいいかもな〜
