web-dev-qa-db-ja.com

同じファイル、異なるファイルサイズ

FTPサーバーからlftpとTransmit(Macアプリ)を使用してバックアップを作成しました。すべて問題ありませんが、1〜2ファイルのファイルサイズは異なりますが、同じです。

最初のファイル:

http://dl.dropbox.com/u/229956/deadcow_seo.php

2番目のファイル:

http://dl.dropbox.com/u/229956/deadcow_seo.php_2.php

これら2つのファイルの違いは何ですか?

12
user66638

deadcow_seo.phpはUnixの行末(LF)を使用し、deadcow_seo.php_2.phpはDOS/Windowsの行末(CR LF)を使用します。

FTPにはいくつかの「転送モード」があり、そのうち2つが一般的に使用されています1バイナリ(「イメージ」とも呼ばれます)およびテキスト(または「ASCII」)。 「バイナリ」モードでは、ファイルはバイトごとにそのまま転送されますが、「ASCII」では、ファイルはテキスト行で構成されていると解釈されます。行末はネットワーク標準に​​変換されますCR LF送信時に、受信時にマシンのネイティブ行末に変換されます。

ファイルをテキストとして転送することは、最初は意味があるかもしれませんが、後で問題が発生するだけです。実際、一部のFTPサーバーはファイルを完全に削除するか、サーバー側でバイナリと同等にします。さらに、ほとんどのテキストエディタ(メモ帳を除く)は、Windows形式とUnix形式の両方でファイルを読み取って保存できます。

FTPクライアントを常にバイナリモードを使用するように構成するだけです。コマンドは通常binまたはmode iですが、グラフィカルクライアントの設定にはチェックボックスまたはファイルタイプリストがある場合があります。


1 いくつかの古いモードは、「tenex」(long廃止、TENEXページベースのファイルの場合)および「圧縮」(単純なRLEアルゴリズムとして定義されているように見えます)です。最近のFTPサーバーは、zlib圧縮の「モードz」をサポートしています。

25
user1686

text(またはASCII)転送モードを使用しました。これは、転送中の改行を置き換えます。これは、Windowsでスクリプトやプログラムを開発し、ファイルをLinuxまたはMac OS Xに転送する場合に便利です。システムはすべての行の終わりにガベージデータを表示するため、他の方法では機能しません。

ファイルに単一のWindows改行\r\n(またはCRLF)があり、LinuxまたはMac OS Xにダウンロードした場合、ファイルは\n(またはLF)、これは1バイト少ないです。 FileMergeを使用してファイルを比較すると、ステータスバーでこれを確認できます。

enter image description here

データ解釈に関するこの回答 も参照してください。


送信の設定で、テキストとして解釈されるファイルタイプを構成できます。

enter image description here

このリストからすべてのファイル拡張子を削除し、Windowsを使用している場合でも、Linux/Mac OS Xの改行、つまり\nで標準化することができます。ほとんどのエディターは、行末モードを変更できます。

12
Daniel Beck