綾小路龍之介の素人思考

ミラーリングの前にバイナリモードとテキストモードの話

バイナリモードとテキストモードの切り替えを自動的にしてくれるftpクライアントがある。このようなソフトの多くはモード自動判定にファイルの拡張子を使っていることが多い。以降で述べるffftpもそんなソフトのひとつだ。バイナリモードはファイル中の改行コード変換を行わないモードで、テキストモードはファイル中の改行コード変換を行うモードである。

そもそもバイナリモードとテキストモードとは何で生じたかというとサーバとクライアントが採用している改行コードが互いに異なることが原因なのである。逆に言えば、サーバとクライアントが同じ改行コードを用いていれば全てのファイルをバイナリモードで転送しても全く問題ない。より間違いのないように言うならば、アップロードするファイルの改行コードをローカルで編集しているときからリモートの改行コードと同じものにすれば、全てのファイルをバイナリモードで転送しても問題無い。親切なエディタは改行コードを変換してくれる機能を持ちあわせている。

例えばサーバがunix機だった場合、改行コードはLFである(つまりエスケープシーケンス\nで出力されるのはLine Feed、行を始める、である。)。これに対しクライアントがWindows機だった場合、改行コードはCR+LFである(つまりエスケープシーケンス\nで出力されるのはCarriage Return + Line Feed、行頭へカーソルを持ってきて行を始める、である。)。サーバとクライアントの改行コードは異なっている。したがってファイルごとにモードを指定してアップロードしなめればならない。

ここから先は憶測だが、今までのことに間違いがなければftpユーザは少なくともサーバの改行コードを知っていなければならない。ということは、モード自動判定ができるソフトはユーザーが設定すること無しにサーバの改行コードを判定しているということになるのかもしれない。言い換えれば、テキストモードの場合には、CRまたはLFまたはCR+LFを全てLFにするという方法ではサーバがunix機の場合はいいけど、サーバがWindows機の場合は問題ありだと思う(Windowsの改行コードはCR+LF)。

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2008-12-16T04:23:18+09:00
  2. Modified: 2008-12-16T07:38:00+09:00
  3. Generated: 2017-02-16T23:09:32+09:00