ASCII vs Binary vs Auto?


16

私はサーバー間でファイルを転送していますが、元々持っていた改行や改行とは対照的に、一部のファイルが1つの長い連続行に変更されることに気付き始めました。これは、元々「自動」に設定されていたFTPクライアントの転送タイプと関係があると考えていますが、追加オプションとして「バイナリ」と「ASCII」を使用しています。

要するに、あるサーバーから別のサーバーにファイルを転送する方法の違いは何ですか?これらの違いは、前述のような方法でファイルを変更することができますか?

譲渡するFROM WindowsのTOのLinux。

回答:


27

FTPの「バイナリ」転送モードは、ファイルを1バイトずつ正確にコピーします。シンプルでわかりやすい。

ただし、異なるオペレーティングシステム間でテキストファイルを持ち込む場合、これは望んでいない場合があります。異なるオペレーティングシステムでは、異なるコードを使用して改行を表します。この目的のために「ASCII」モードが存在します。すべての行末をソースシステムの形式から宛先の形式に自動的に変換します。

「自動」についてはわかりませんが、ファイルの拡張子またはそれに類似したものがテキストファイルかどうかを判断し、適切なモードを推測しようとしているように見えます。

どのモードが必要かは、ファイルで何をしているのかによって異なります...単にコピーしてファイルをバックアップする場合は、おそらくバイナリモードでコピーして、まったく同じになるようにします後でそれらを再びWindowsサーバーに復元します。両側でテキストファイル(クロスプラットフォームプログラムの設定ファイルとして)として使用する必要がある場合は、ASCIIモードを使用して翻訳する必要があります。

編集:私が知る限り、WindowsからLinuxへのFTPファイルは改行が消えることはありません... ただし、ASCIIモードでコピーしからバイナリモードでWindowsサーバーに戻すと、Linuxスタイルの行末は、Windowsボックスで認識されない場合があります。(メモ帳には表示されません。ワードパッドには表示されます。YMMVは他のソフトウェアと共に表示されます。)

(今日、このような便利さ-行末を自動的に変換する-FTPなどの基本的なプロトコルでは奇妙に思えるかもしれません。しかし、FTPが発明されたとき、テキストファイルの送信は標準であり、プロトコルの目標の1つはこれは可能な限り簡単です。)


両方の素晴らしい説明。私は今ではずっと混乱していないと感じています。
サンプソン

私はそのASCIIモードのポイントをunderstadnd決してあなたに感謝し、そして今、私は間違いなくだけでバイナリモードを使用します
Kiwy

3

確かに違いがあり、バイナリオプションを使用しない限り、プレーンテキスト以外のファイル転送が台無しになります。通常は、[ok]の場合は常に使用します:)


それらを復元する方法はありませんか?または、今後これを回避するために、今すぐバイナリで転送する必要がありますか?
サンプソン

あなたそれらを選択解除できると確信しています、時間がかかる可能性があり、それらを再送信したいと強く思われます。
チョッパー

1

どのオペレーティングシステムからファイルを転送していますか?Linux / Unixは、Windowsとは異なる改行を使用します。したがって、Linuxコンピューターでファイルを生成してWindowsで開くと、奇妙に見えるかもしれません。これを修正するユーティリティがありますが、私の経験では、メモ帳の代わりにWindowsでワードパッドを使用すれば大丈夫です。


IDEのWindowsでこれらを作成してから、Linuxサーバーに移動します。後日、Linuxサーバーからそれらを開いて、長い連続した行を見つけます。
サンプソン

実行dos2unixしてみて、それが行を修正するかどうかを確認してください
-einstiien

1

WindowsとUnixでは、行末に異なるバイトがあります(Windowsは0D 0A 16進数、Unixは0Aのみ)。バイナリモードでファイルを転送する場合、ファイルのバイトは変更されずに1台のコンピューターから移動されます。これは、バイナリ形式(ZIPファイル、画像など)に必要ですが、テキストファイルで問題が発生する可能性があります。たとえば、Windowsのnotepad.exeは、Unixスタイルの改行だけを1つの長い行、unixエディターとして表示しますWindowsスタイルを見ると、すべての行の最後に^ Mが表示される場合があります。

技術的には、バイナリ形式(zip、jpg、png、その他の無限)ではFTPをBINARYに設定する必要がありますが、テキスト形式(HTML、PHP、CGIなど)ではASCIIに設定する必要があります。

ほとんどの優れたFTPプログラムには自動設定もあります。つまり、既知のファイル拡張子に応じてモード(BINARYまたはASCII)を決定します。たとえば、JPGファイルの転送を自動的にBINARYに切り替え、ASCIIでPHPファイルを送受信します。モード。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.