2018.10.26 システム
FTPのバイナリーモードとアスキーモード?
こんにちは、システムエンジニアの大貫です。
最近古いサーバに、SFTPではなく、FTPで接続する機会があったので、改めて情報を整理しました。
普段、Webサイトのメンテナンスをする際に、FTP転送ツールは、「WinSCP」や「FileZilla」を使用しています。
FTPのファイル転送モードは、以下の2種類があるのは、常識だと思いますが、10年以上前の話ですが、昔は、アスキーモードでファイルをアップして、「画像が壊れた」とか、バイナリーモードでプログラムをアップして、「改行コードが異なっているからプログラムが動かない」とか、よく聞きました。
<FTPの転送モード>
【アスキー(テキスト)モード】改行コードを自動的に修正して転送する
【バイナリーモード】データをそのまま転送する
昔は、Perlなどのプログラムで、本番環境(Linux)と開発環境(Windows)で改行コードの違いで動作しないことがあったので、アスキーモードは、よく利用された便利な機能でした。
しかし、最近は、エディタや開発環境も進化しており、改行コードを整備できるので、アスキーモードでアップするメリットはほとんど無く、逆に改行コードの変換が入ることで、意図しないファイル転送や破損を防ぐために弊社の方針も、FTPツールの設定は、必ず「バイナリモード」で設定するように義務化されております。
逆に初期設定で、バイナリモードに設定しているので、特に意識していなかったのですが、最近古いサーバにFTPで接続して、ファイルの中身を閲覧する機会があり、WinSCPを使用して直接開いたところ、改行が変換されて表示されてしまいました。
基本的にバイナリモードで転送するように設定してあるので、不思議に思い調べてみると。。。
WinSCPの仕様で、外部エディタを指定すると、外部エディタの初期値として、「テキストモードで転送する」が有効になっており、メインの設定が有効にならないようでした。
弊社では、基本的に直接ファイルを開いて本番環境を修正することは無く、FTPでファイルの転送を行う際は、修正前後のバックアップを取ってから作業を行うので、特に問題はなく、今まで気づかなかったのですが、もしも直接編集していたらと思うと、ぞっとしました。
安易に作業をせず、基本に忠実に仕事をすることは大事ですね!!
ちなみに、WinSCPの外部エディタの転送設定を変える方法は以下のとおりですので、もしも外部エディタを使用していて、設定できていない人がいたら設定を確認してみてください。
<WinSCPの外部エディタの転送設定方法>
・[オプション]-[環境設定]-[エディタ]の画面で対象エディタの「編集」ボタンをクリック
・[外部エディタのオプション]の項の「常にテキスト転送モードで転送する」のチェックを外す
また、今回はFTP接続なので、このような問題を発見しましたが、最近のサーバであれば基本的にはSFTPに対応しておりますので、SFTPであれば、バイナリーモードしか無く、このような問題もありませんし、通信が暗号化されるので、SFTPに対応しているのであれば、SFTPで接続することをおすすめいたします。
今回のブログは、FTPツールを使用する一般ユーザ向けに記載させていただきましたが、弊社ではどんな作業でもバックアップを取得して、トラブルが発生しないよう最新の注意を払って作業を行うようルール化がされておりますので、安心して、作業をご依頼いただければと存じます。