ASCII vs Binary vs Auto?

16

Ich übertrage Dateien zwischen Servern und habe gerade festgestellt, dass einige von ihnen so geändert werden, dass sie eine lange durchgehende Linie bilden und nicht die ursprünglichen Zeilenumbrüche und Zeilenumbrüche aufweisen. Ich gehe davon aus, dass dies etwas mit dem Übertragungstyp meines FTP-Clients zu tun hat, der ursprünglich auf "Auto" eingestellt war, aber als zusätzliche Optionen "Binär" und "ASCII" enthält.

Kurz gesagt, was sind die Unterschiede zwischen der Art und Weise, wie ich eine Datei von einem Server auf einen anderen übertrage, und können diese Unterschiede die Datei auf die oben erwähnte Weise ändern?

Übertragung aus Windows - TO Linux.

Sampson
quelle

Antworten:

27

Der Übertragungsmodus "Binär" von FTP kopiert Dateien genau byteweise. Einfach und unkompliziert.

Wenn Sie Textdateien zwischen verschiedenen Betriebssystemen übertragen, ist dies möglicherweise nicht das, was Sie möchten. Verschiedene Betriebssysteme verwenden unterschiedliche Codes, um Zeilenumbrüche darzustellen. Zu diesem Zweck gibt es den "ASCII" -Modus: Er übersetzt automatisch alle Zeilenenden vom Format des Quellsystems in das des Ziels.

Nicht sicher über "Auto", aber ich stelle mir vor, dass die Dateierweiterung oder etwas ähnliches zu entscheiden, ob es eine Textdatei ist, und versucht, den entsprechenden Modus zu erraten.

Welcher Modus gewünscht wird, hängt genau davon ab, was Sie mit den Dateien tun. Wenn Sie sie nur kopieren, um sie zu sichern, möchten Sie sie wahrscheinlich im Binärmodus kopieren, damit sie genau gleich sind, wenn Sie können sie später erneut auf dem Windows-Server wiederherstellen. Wenn sie auf beiden Seiten als Textdateien (möglicherweise als Konfigurationsdateien für ein plattformübergreifendes Programm?) Verwendet werden sollen, sollten Sie sie im ASCII-Modus übersetzen.

EDIT: Soweit ich das beurteilen kann, sollte FTPing Dateien von Windows auf Linux nie in Zeilenumbrüchen führen verschwinden ... aber , wenn man sich im ASCII - Modus zu kopieren, und dann bringt wieder in Binär - Modus auf den Windows - Server, die Linux -Stil-Linienenden werden auf der Windows-Box möglicherweise nicht erkannt. (Notepad wird sie nicht sehen; Wordpad wird; YMMV mit anderer Software.)

(Heutzutage mag eine solche Annehmlichkeit - das automatische Konvertieren von Zeilenenden - in einem so grundlegenden Protokoll wie FTP seltsam erscheinen. Als FTP erfunden wurde, war das Senden von Textdateien jedoch die Norm, und eines der Ziele des Protokolls bestand darin, dies zu erreichen das ist so einfach wie möglich.)

Josh
quelle
Großartige Beschreibung von beiden. Ich fühle mich jetzt viel weniger verwirrt.
Sampson,
danke, ich verstehe nie den Sinn dieses ASCII-Modus, und jetzt werde ich definitiv nur den Binärmodus verwenden
Kiwy
3

Es gibt in der Tat Unterschiede, und sie werden Ihre Nicht-Klartext-Dateiübertragungen beeinträchtigen, sofern Sie nicht die Binäroption verwenden - verwenden Sie im Allgemeinen immer, wenn dies in Ordnung ist :)

Chopper3
quelle
Gibt es keine Möglichkeit, sie wiederherzustellen? Oder muss ich jetzt einfach mit Binary transferieren, um dies in Zukunft wieder zu vermeiden?
Sampson
Ich bin sicher, Sie könnten sie entfernen, aber es könnte lange dauern, ich wäre stark versucht, sie erneut zu übertragen.
Chopper3
1

Von welchem ​​Betriebssystem übertragen Sie Dateien? Linux / Unix verwenden andere Zeilenumbrüche als Windows. Wenn Sie also eine Datei auf einem Linux-Computer erstellen und unter Windows öffnen, sieht dies möglicherweise komisch aus. Es gibt Dienstprogramme, um dies zu korrigieren, aber meiner Erfahrung nach ist es in Ordnung, wenn Sie Wordpad unter Windows anstelle von Editor verwenden.

einstiien
quelle
Ich erstelle diese unter Windows in einer IDE und verschiebe sie dann auf den Linux-Server. Zu einem späteren Zeitpunkt öffne ich sie vom Linux-Server, um die lange durchgehende Linie zu finden.
Sampson
Versuchen Sie es mit Laufen dos2unixund sehen Sie, ob dies die Zeilen korrigiert
einstiien
1

Windows und Unix haben unterschiedliche Bytes am Zeilenende (Windows a 0D 0A hex, Unix nur a 0A). Beim Übertragen von Dateien im Binärmodus werden die Bytes einer Datei unverändert von einem Computer verschoben. Dies ist für Binärformate (z. B. ZIP-Dateien, Bilder usw.) erforderlich, kann jedoch zu Problemen mit Textdateien führen: ZB zeigt notepad.exe unter Windows eine Textdatei mit nur Zeilenumbrüchen im Unix-Stil als eine lange Zeile an, ein Unix-Editor wird möglicherweise am Ende jeder Zeile ^ M angezeigt, wenn der Windows-Stil angezeigt wird.

Technisch gesehen müssen Sie für Binärformate (zip, jpg, png und endlose andere) FTP auf BINARY und für Textformate (HTML, PHP, CGI usw.) auf ASCII einstellen.

Die meisten guten FTP-Programme haben auch eine automatische Einstellung, was bedeutet, dass sie den Modus (BINARY oder ASCII) in Abhängigkeit von bekannten Dateierweiterungen bestimmen. Beispielsweise wird die Übertragung für JPG-Dateien automatisch auf BINARY umgestellt und eine PHP-Datei in ASCII gesendet / empfangen Modus.

Yamodax
quelle