ASCII対バイナリ対自動?

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

つまり、あるサーバーから別のサーバーにファイルを転送する方法の違いは何ですか。また、これらの違いによって、前述のようにファイルを変更することができるでしょうか。

ある[ FROM のWindows TO のLinuxを転送する。

16

4 答え

FTPの「バイナリ」転送モードは、ファイルをバイト単位で正確にコピーします。単純明快です。

ただし、異なるオペレーティングシステム間でテキストファイルをやり取りする場合は、これが目的とは異なる場合があります。異なるオペレーティングシステムは、改行を表すために異なるコードを使用します。この目的のために "ASCII"モードがあります:それは自動的に全ての行末をソースシステムのフォーマットからデスティネーションのフォーマットに変換します。

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

どちらのモードを選択するかは、ファイルの内容によって異なります。バックアップするためにファイルをコピーするだけの場合は、バイナリモードでコピーすることをお勧めします。後でそれらをWindowsサーバーに復元します。それらがテキストファイルとして(おそらくクロスプラットフォームプログラムのための設定ファイルとして)使用可能である必要があるなら、あなたはそれらを翻訳するためにASCIIモードを使用したいでしょう。

EDIT: As far as I can tell, FTPing files from Windows to Linux should never result in line breaks disappearing... however, if you copy them in ASCII mode, and then bring them back to the Windows server in binary mode, the Linux-style line endings might not be recognized on the Windows box. (Notepad won't see them; Wordpad will; YMMV with other software.)

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

27
追加された
両方の素晴らしい説明。私は今、混乱することが少なくなっています。
追加された 著者 Levi Wallach,
あのASCIIモードのポイントを理解したことは一度もありません、そして今は絶対にバイナリモードだけを使用します
追加された 著者 Kiwy,

実際には違いがあります。バイナリオプションを使用しない限り、プレーンテキストではないファイル転送には問題があります。通常は、ok :)の場合は常に使用します

3
追加された
私はあなたがそれらを選択解除することができると確信しています、しかしそれは長い時間がかかるかもしれません、私はそれらを再送信することを強く誘惑したいです。
追加された 著者 Chopper3,
それらを復元する方法はありませんか?それとも将来的にこれを避けるために、単にBinaryで転送するだけでいいのでしょうか。
追加された 著者 Levi Wallach,

WindowsとUnixでは、行末のバイト数が異なります(Windowsでは0D 0Aの16進数、Unixでは0Aのみ)。バイナリモードでファイルを転送するとき、ファイルのバイトは変更されずに1台のコンピュータから移動されます。これはバイナリフォーマット(ZIPファイル、画像など)には必須ですが、テキストファイルに問題が生じる可能性があります。 Windows上のnotepad.exeは、1つの長い行としてunixスタイルの改行だけでテキストファイルを表示します。Windowsスタイルを見るとき、unixエディタは各行の終わりに^ Mを表示するかもしれません。

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

ほとんどの優れたFTPプログラムは自動設定もしています。自動的にJPGファイルの転送をBINARYに切り替え、ASCIIファイルモードでPHPファイルを送受信します。

1
追加された

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

1
追加された
私はIDEのウィンドウ上でこれらをオーサリングしてからLinuxサーバーに移動します。後日、Linuxサーバからそれらを開いて長い連続行を見つけます。
追加された 著者 Levi Wallach,
dos2unix を実行してみて、それでも行が修正されるかどうかを確認してください。
追加された 著者 DrBomb,