2011年9月13日火曜日

WinSCPのディレクトリ自動同期機能で開発効率アップ

RIA系の開発だと、画面定義XMLを専用のデザイナで作って、それをWEBサーバーにアップしてクライアントから動作確認、なんてことをやるケースが多いと思います。
今ウイングアークのSVFをイジくってるんですが、SVFも「SVFX-Designer」っていうGUIの画面デザイナで作成したXMLを、SVFサーバー(帳票サーバー)に配置して動作確認する必要があります。

環境的にはSVFサーバーがLinuxで、Sambaも入れてないしFTPサーバーも立ってない。というわけでWindows上で作った画面定義XMLファイルをLinuxサーバーにコピーするのにWinSCPを使ってGUIの画面でD&Dしてたんですが、これが結構面倒(なんせ開発中なんで頻繁に更新が発生する)。

クライアントPCで所定のフォルダ内に作成したXMLファイルをサーバーの所定のディレクトリに同期させればいいだけなんだけど…

と思ってよくよく調べてみたら、WinSCPのコマンドモードで「keepuptodate」なんていう素晴らしいモードがあることを知りました。
これを使うと、指定したフォルダを監視して、更新があったら同期する、という処理を勝手に行ってくれます。素敵。

WinSCPコマンドモード用スクリプトファイル

例えば、クライアント「C:\Users\user_name\Documents\form」とサーバー「/home/user/form」ディレクトリを同期させたい場合。
テキストエディタで以下のようなスクリプトを書いて、任意の名前で保存。
option batch on
open user@192.168.1.2
keepuptodate C:\Users\user_name\Documents\form /home/user/form
※当然ですが、user@192.168.1.2 のところは、ご自身の使う環境に合わせて変更してください。
user:OSへのログオンユーザー名
IP:サーバーのIPアドレス


WinSCPコマンドモード起動バッチ

WinSCPをコマンドモードで起動するバッチファイルを作成します。
上記のスクリプトを「ドキュメント」フォルダに「winscp_keepuptodate.txt」という名前で保存した場合。
"C:\Program Files (x86)\WinSCP\WinSCP.com" /script="C:\Users\user_name\Documents\winscp_keepuptodate.txt"
※改行されて表示されてると思いますが、改行せず続けて書くこと。
当然ですが、WinSCP.comへのパスはご自身の環境に合わせて変更してください。


以上で準備は完了。あとは作成したバッチを叩くと、コマンドプロンプトな画面が表示されて、何かフォルダに変更が発生する度に自動でそれを検知して同期してくれます。

さらに詳しく知っておきたい人は、こちらからどうぞ。
WinSCPスクリプト入門:コマンドやバッチファイルとの連携による自動処理 - SourceForge.JP Magazine : オープンソースの話題満載

こういうのはほんのちょっとしたことだけど、それだけで異様に作業効率が上がるので、同じような環境で微妙にお困りの方にはオススメです。

0 件のコメント: