アスキー転送モードでアップロードしたら、改行コードがLFからCR+LFになった

 プログラムで、CSVファイルを読込んだら最後のカラムのデータに、「Ctrl+M」が付いていた。

 Excelのマクロで作成したファイルなので、Windows上では、文字コードSJIS、改行コード:CR+LFである。文字コードEUCLinuxFFFTPアスキー転送モードでサーバの文字コードに「EUC」を選択してアップロードした。

 自分の中では、アスキー転送モードでアップロードした場合は、必ずCR+LF⇒LFになり、ダウンロードした場合は、必ずLF⇒CR+LFになると思い込んでいた。

 改行コードが変換されないだけかと思ったが、改行コードがLFのファイルをアスキー転送モードでアップロードしてみたところ、LFがCR+LFになった。

 調べてみたら、どうやらLinuxFTPソフトがvsftpdの場合は、デフォルトの設定でアスキーモードの転送を許可していないらしく、その状態で発生するようである。

 アスキーモードでの転送を許可するには、設定ファイル(/etc/vsftpd/vsftpd.conf)において、コメントになっている以下の箇所

#ascii_upload_enable=YES
#ascii_download_enable=YES

の先頭の#を削除して有効にすればよい。