Gleiche Datei, unterschiedliche Dateigröße

12

Ich habe ein Backup von meinem FTP-Server mit lftp und Transmit (Mac-App) erstellt. Alles ist in Ordnung, aber es gibt eine unterschiedliche Dateigröße für 1-2 Dateien, aber sie sind identisch.

Erste Datei:

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

Zweite Datei:

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

Was ist der Unterschied zwischen diesen beiden Dateien?

user66638
quelle
Sind Sie sicher, dass das Problem nicht nur die angegebene Größe ist? Apple hat vor einigen Jahren die Art und Weise geändert, wie Mac OS X Speicherplatz meldet, um sie an die Methode anzupassen, die Festplattenhersteller verwenden. Anstelle von 1 MB = 1024 KB wird 1 MB = 1000 KB verwendet. Die andere Größe wird möglicherweise von Ihrem Linux-Host mithilfe der anderen Methode gemeldet, sodass die Dateien eine andere Größe zu haben scheinen. Ich bin mir nicht sicher, ob dies in Ihrem Fall zutrifft, aber es ist trotzdem interessant.
WebDevKev
Es ist nicht das. Schauen Sie sich einfach die Dateien an, die er als Teil der Frage bereitgestellt hat, oder den Diff-Screenshot in meiner Antwort. Die Dateien sind bei weitem nicht groß genug, um einen Unterschied zu machen, mit jeweils 1800-1900 Bytes.
Daniel Beck

Antworten:

25

deadcow_seo.phpVerwendet Unix-Zeilenenden ( LF), während deadcow_seo.php_2.phpDOS / Windows-Zeilenenden ( CR LF) verwendet werden.

FTP verfügt über mehrere "Übertragungsmodi", von denen zwei üblicherweise verwendet werden: 1 - binär (auch "Bild" genannt) und Text (oder "ASCII"). Im "Binär" -Modus wird die Datei genau so übertragen, wie sie ist, Byte für Byte, während "ASCII" bewirkt, dass die Datei als Textzeile interpretiert wird - die Zeilenenden werden CR LFbeim Senden in den Netzwerkstandard konvertiert , und wird beim Empfang in die nativen Zeilenenden des Rechners konvertiert.

Das Übertragen von Dateien als Text mag zunächst sinnvoll sein, später jedoch nur zu Problemen führen - tatsächlich haben einige FTP-Server die Datei vollständig entfernt oder sie auf der Serverseite als binär deklariert. Außerdem können die meisten Texteditoren (außer Notepad) Dateien sowohl im Windows- als auch im Unix-Format lesen und speichern.

Konfigurieren Sie Ihren FTP-Client einfach so, dass er immer den Binärmodus verwendet - der Befehl lautet normalerweise binoder mode i, während grafische Clients möglicherweise ein Kontrollkästchen oder eine Dateitypliste in ihren Einstellungen haben.


1 Einige alte Modi sind "tenex" ( lange veraltet, für TENEX-Seitendateien) und "komprimiert" (was als einfacher RLE-Algorithmus definiert zu sein scheint). Aktuelle FTP-Server unterstützen "mode z" für die zlib-Komprimierung.

user1686
quelle
12

Sie haben den Text- (oder ASCII-) Übertragungsmodus verwendet, der Zeilenumbrüche während der Übertragung ersetzt. Dies ist häufig hilfreich, wenn Sie Skripts und Programme unter Windows entwickeln und die Dateien auf Linux oder Mac OS X übertragen. Andernfalls funktionieren sie einfach nicht, da das System am Ende jeder Zeile fehlerhafte Daten sieht.

Wenn die Datei einen einzelnen Windows-Zeilenumbruch aufweist \r\n(oder CRLF) und Sie sie auf Linux oder Mac OS X heruntergeladen haben, wurde sie durch \n(oder LF) ersetzt, was 1 Byte weniger ist. Wenn Sie FileMerge zum Vergleichen der Dateien verwenden, wird dies in der Statusleiste bestätigt:

Bildbeschreibung hier eingeben

Siehe auch diese Antwort zur Dateninterpretation .


In den Einstellungen von Transmit können Sie konfigurieren, welche Dateitypen als Text interpretiert werden:

Bildbeschreibung hier eingeben

Sie können alle Dateierweiterungen aus dieser Liste entfernen und nur bei Linux / Mac OS X-Zeilenumbrüchen standardisieren, dh \nauch unter Windows. Die meisten Editoren können den Zeilenende-Modus ändern.

Daniel Beck
quelle