web-dev-qa-db-ja.com

どのような状況でASCIIを使用してFTP経由でファイルを転送する必要がありますか?(asciixferとbinxferの違いは尋ねていません)

FTPに関してはASCIIモードとバイナリの違いは理解していますが、私が理解していないのは、ASCIIモードが必要な理由です。これは、最上位ビットを削除して時間を節約し、転送の全体的な速度を1/8に上げるために使用されていたレガシーなものですか?それとも、私が知らない隠された用途がありますか?約?

異なるOS間でテキストを転送するときに、モードをbinに切り替えるのを忘れてしまうため、多くの問題が発生しました。特に今日のはるかに高速なインターネット速度では、なぜ「ビン」がすべてのデフォルトではないのか理解できません。

Knowwutimean、Vern?

16
MALON

ASCIIモードが存在するため、リモートシステムにテキストファイルをアップロードするときに、そのシステムの行末や文字セットの規則を知らなくても、正しい答えを得ることができます。テキストファイルの転送が、たとえば電子メールよりもFTP経由で行われることが多い場合は、より重要でした。

実際の問題に対処するには:FTPクライアントとサーバーの両方のドキュメントをチェックして、デフォルトでASCIIモードを設定する方法があるかどうかを確認します。多くの場合、これはある種の単純なものです。接続するたびにいくつかのFTPコマンドを送信する「プロファイル」。

哲学的な問題に対処するには:FTPは40年前のプロトコルであり、過去の手荷物のかなりの部分を占めています。いつの日か、あなたが依存しているいくつかのプロトコルがずっと前に標準化されていて、まだいくつかの古いデータにアクセスできることをとてもうれしく思います。

12
Perry

私は、1つには、ftpサーバーからASCIIモードを削除することに投票します。すべてのEOL変換は、ファイルを使用するアプリケーションによって実行できます。今日の多くのアプリは、いずれにせよ両方のEOLタイプを理解しています。少なくとも、サーバーがデフォルトでバイナリの使用に切り替わり、要求された場合にのみASCIIを使用するようにしたいと思います。

5
Brady Moritz

ASCIIモードの実用的なシナリオの1つは、PHPまたはPerlまたは同様のスクリプトをWindows開発マシンからUnixサーバーにアップロードすることです。バイナリモードを使用するには、個別に必要です。 ASCIIモードでは、変換は「自動的に」実行されますが、行末シーケンスの変換。

更新:私たちが遭遇したもう1つのシナリオがあります-EBCDICエンコーディングを使用するメインフレームとの間でデータを転送するとき、ASCIIモードは、エンコーディング間の変換を実行するようにサーバーに指示します。

これは、バイナリFTP接続の使用に起因する問題の実際的な例です。 PHPには、次の2種類のコメントがあります。

// a single line comment like this
/* a block comment like this */

ブロックコメントには開始と終了があります。ただし、1行のコメントは行の終わりで終了します。

バイナリ接続を使用して単一行コメントを含むphpファイルをアップロードすると、単一行コメントにヒットするとすぐにphpの実行が停止します。行の終わりをコメントの終わりとして認識しないため、phpスクリプトの残りの部分を効果的にコメントアウトします。

ただし、FTPをASCIIモードで使用すると、行末が正しく読み取られ、期待どおりにphpコードが実行されます。

0
jodamo5