ウェブ開発で、ローカルのWindowsマシンでファイルを編集してインターネット上のUNIXサーバにファイルをアップロードして、これを繰り返して作業する。
が、いちいちファイルをアップロードするのは面倒なので、UNIXサーバ上のファイルを直接編集したい。
もしくはアップロードを自動化したい。
その方法を考える。
● Samba
Samaba(Windows共有)やNFSはLAN内での使用を想定しており、インターネット越しでは非常に遅い。
セキュリティ的に出来ればSambaのポートを開けたくないというのもある。
あまり良い方法ではない。
● SSHFS
SSHだけで接続出来るのは手軽で良いが、SambaよりマシだがSSHFSも速いとは言えない。
接続が不安定というのもマイナス点。
UNIXサーバの管理者権限を持ってない場合は良い方法かもしれない。
● WebDAV
Samba/SSHFSより速くて安定してる。
けれど、WindowsのWebDAVクライアント環境はイマイチで、アクセス制御やSSLでの運用が難しい。
WebDAVサイト用にSSLのデジタル証明書を取得するコストを確保出来るのならこれでいいかも。
以上見てきたように、UNIXサーバでファイル公開してWindowsマシンでマウントしてファイルを直接編集するのはあまりいい方法がない。
次にアップロードを自動化する方法を考える。
● lsyncd
まずWindowsマシンに仮想OSソフトをインストールし、仮想Linuxサーバを起動する。(あるいはLAN内にLinuxサーバを用意する。)
Linuxサーバにlsyncdをインストールして、インターネット上のUNIXサーバとRsync+SSHで同期を取るように設定する。
さらにLinuxサーバにSambaをインストールして、Windowsでマウントする。
仕組みが面倒なのは我慢するとして、問題なのはlsyncdによる同期は結構ラグがある。
ファイル更新してからサーバにミラーリングが反映されるまでに5秒は掛かる。
ひょっとするとlsyncdの設定次第ではもっとラグを短く出来るかも。
また、lysncdはバージョンアップで互換性が無くなったり、サポート体制に不安を感じる。
● WinSCPのKeep remote directory up to date
WinSCPには指定したフォルダを監視して、フォルダ内のファイルが更新されたら、接続先のサーバに自動でアップロードする機能がある。
監視するフォルダの数が多くなると動作が重くなるが、WinSCPはGUIのソフトで設定しやすいので、その日の開発で対象になりそうなフォルダを絞り込んでおけば良い。
面倒なセットアップが不要で、動作を目で確かめやすいのが良い。
● Dropbox
Dropboxはファイル更新のラグが数秒でlsyncdよりも速いくらい。
当然Dropboxの履歴機能等も使えるのでバックアップにもなる。
DropboxはLinux以外のUNIXにはインストール出来ないので環境が限られるし、Dropboxのような外部サービスを使うのはコンプライアンス的にどうか?という所もあるが、それがクリア出来るなら結構いい。
lsyncdを使うより全然手軽。
というわけで、自分なりに色々検討した結果、WinSCPかDropboxを推奨します。