SugarSyncのWindowsクライアントををLinux上で使うために、試行錯誤。
2011/08/04 towerの移設に伴い、コンソール上のXサーバーを立ち上げておくことができなくなったため、内容改定。
大きな問題は、Linux上でのファイルの更新が、すぐSugarSyncのサーバーと同期されないこと。逆に、SugarSyncのサーバー上にあるデータが更新されたときには、ちゃんと同期される。
ただし、SugarSyncファイルマネージャを立ち上げたときには、同期フォルダをスキャンしてきちんと同期を行う。
そこで、cronで定期的に、SugarSyncファイルマネージャの起動停止を行うようにした。
まずは、rc形式のSugarSyncコントロールスクリプトを作成。
このスクリプトで、restartを10分ごとに行うことにより同期を行う。
~/bin/sugarsync。
2011/08/04 exportするDISPLAY変数を、":0.0"からVNCのDISPLAYである":1.0"に変更。
#!/bin/bash
#
# SugarSync
#
WAIT_TIME=5
export WINEPREFIX=/home/nor/.wine
export LANG=ja_JP.UTF-8
export DISPLAY=:1.0
start() {
if [ "${CURRENT_PID}" = "" ]; then
wine ./.wine/drive_c/Program\ Files/SugarSync/SugarSyncManager.exe >& /dev/null &
else
echo SugarSync is running on PID: ${CURRENT_PID}
fi
}
stop() {
if [ "${CURRENT_PID}" = "" ]; then
echo SugarSync is not running
else
kill ${CURRENT_PID}
fi
}
getpid() {
CURRENT_PID=`ps ax |grep SugarSync|grep -v grep | sed "s/^ *//" | sed "s/ .*$//"`
}
case "$1" in
start)
getpid
start
;;
stop)
getpid
stop
;;
status)
getpid
if [ "${CURRENT_PID}" = "" ]; then
echo SugarSync is not running
else
echo SugarSync is running on PID: ${CURRENT_PID}
fi
;;
restart)
getpid
stop
sleep ${WAIT_TIME}
getpid
start
;;
*)
echo $"Usage: $prog {start|stop|restart}"
exit 1
esac
exit
だがSugarSyncファイルマネージャはWindows GUIアプリケーションなので、普通に実行すると画面に表示されてしまい、とてもじゃまだ。
そこで、Xのウィンドウを操作するアプリケーションDevil's Pieを導入。
~/.devilspie/sugarsync.dsの記述は以下のとおり。
(if
(matches (application_name) "^SugarSync")
(set_workspace 4))
SugarSyncを再起動するときに、一瞬ワークスペースに表示されるのが見えてしまうが、フォーカスは移らないし、10分に1回の同期の代償としては耐えられないほどではない。
Linuxマシンだけだったら、rsyncで定期的に同期を行ってしまえばいいのだが、Windowsマシンで、すべてのマシンにrsyncをいれる気にもならないのだよね。一応、データがSugarSyncに保存されるという安心感もあるし...