Windowsで気軽なftpサーバ、兼、オンデマンドなftpサーバ

一つ前のエントリでは実はあえて伏せていたネタ。

Python の SimpleHTTPServer は知ってますかね。標準添付ライブラリで、「単純な HTTP サーバのベースとなるモジュール、兼、「単純な HTTP サーバ」」ね。拡張して使うためのものだけれど、簡単なディレクトリ公開 HTTP サーバとしても使える。無論これで本格的な WEB サーバに仕立て上げようなんざ無謀だけれども、テスト用途や個人向けのちょっとした日常用途には十分。

で、ftp サーバ、についての同じノリのものは、標準添付ライブラリにはいないんだけれど、昔から出回ってました。ただね、自分が忘れちゃってたもんだから、一つ前のエントリでは触れなかった。

改めて見つけてみたけれど、これは多分ワタシが以前使ってたものとは違うんじゃないかな。5年くらいは前なんだけど、もっとチャチかったはず。以下画像だけでわかっちゃう人はわかっちゃってみてください:
pyftpdlib_serve_at_win7
(以前使ってたヤツは Google Code に単独の Python モジュールが無造作に置いてあっただけだったはずなので、別物と思うけど、それが進化したものでないとも言い切れないのでなんともいえない。)

ワタシは MSYS ユーザなので、左側の「Windows」が Windows っぽくないの。

Python にべったり染まりだすとね、もはや「Windows で~したい」と Google 検索するよりも先に、「Python にないかしら」と検索するようになってくるので、こういったことも Python ユーザには割と常識的だったりするんだけれど、「Windows ftp サーバ」と検索すると、まぁだいたいは FileZilla、あるいは Cerberus FTP Server、もしくは IIS の情報が「大量に」出てきて、まぁ python で FTP サーバ立てられるってことを大声で叫んでる人はそんなにいない、か、いてもあんまし目立たないっすね。てわけで pyftpdlibはいかがっすかぁ、てことで。(「Very fast asynchronous FTP server library」と主張してる。ただ、説明から察するに、「very fast」なのは Unix で、じゃないかな。新らしめのシステムコールをバンバン使うみたいなので。)

このエントリの見出し「オンデマンドなftpサーバ」ですけど、要はね、「あるプログラムが明示的に FTP サーバを立ち上げてその子を相手にして、用が済んだらそのままサーバもろともさようなら」としたいような、稀有なケースってのが、あるんですな。主にテスト・デバッグ目的の場合が多いけれど、ありがちなのは、「FTPサーバとしか連携出来ない業務プログラムの振る舞いを借りてデータ投入バッチを作る」みたいな。「FTPサーバとしか連携出来ないってなんやねん」と思うかもしらんけど、一般市民の目に触れないような業務アプリケーションなんか、そんなもんです。インフラがプアか、設計が粗野か、時間がないのか、まぁそんなとこ。

ちぅわけで、「Windows で手軽に FTP サーバ立てたい」よりは「オンデマンドなftpサーバ」の方にこそ価値は高い、と。特に「何もしなければ普通通りフォアグラウンドで動く(フォアグラウンドでしか動けない)」のが、この目的には却って望むところ、でなぁ。ワタシの場合は画像で見せた通りなんだけど「Unix側が ssh ホストすんのは簡単だから Win から Unix は快適だけど、Unix から Win に転送すんのダルいなや…、いちいち共有フォルダに持ってくの、クド過ぎんぞ」が動機なんすね。相手が「HostOnly」前提の VirtualBox だからなおのこと、「ftpで十分」ってことになるわけだわ。

そして。「ftpしか出来ないとするならば」、話は「んな危険なことをなぜにこんな時代に説明しとんぢゃ、ボゲぇ」になっちゃうわけだけど。画像にしのばせといた通り。FTPS 出来る、「はず」なのね。これはまたの機会に。(だって、まだ試してないんですもの。)