Der ASCII-Modus ftp zwischen zwei Linux-Boxen führt eine unerwünschte CRLF-Übersetzung aus
2689
Steve Prior
Mit dem FTP-Befehl habe ich eine XML-Datei von einer Red Hat Enterprise Linux-Box, die sich in Europa befindet, an eine andere RHEL-Box in den USA übertragen. Ich habe keinen Transfermodus angegeben, also standardmäßig ASCII, was meines Erachtens keine Zeichen zwischen zwei Linux-Boxen übersetzen sollte, tat es aber. Die Dateigröße wuchs am Ziel und wurde von vim als DOS-Datei gemeldet. Ich habe auf beiden Maschinen LANG = en_US.UTF-8 überprüft.
Hat jemand eine Ahnung, warum diese Zeichenübersetzung stattgefunden hat?
2 Antworten auf die Frage
1
Joachim Sauer
Genau das macht der ASCII-Modus. Es übersetzt die Zeilenenden.
Wenn Sie das nicht möchten, wechseln Sie einfach in den BINARY-Modus, in dem die Daten ohne Umwandlung in der vorliegenden Form übertragen werden.
Heutzutage möchte man kaum noch den ASCII-Modus. Insbesondere nicht für XML-Dateien.
Ich denke, der Punkt hier ist, dass es zwei Linux-Boxen waren. Warum sollte es die Zeilenenden in das DOS-Format übersetzen?
vor 14 Jahren
0
@Troubadour:using for line endings predates DOS. RFC 765 specified it for text mode ftp in 1980, roughly a year before the IBM PC first hit the market.
vor 14 Jahren
1
Ja, das war der Punkt der Frage.
vor 14 Jahren
0
0
Bavi_H
RFC 959 sagt, dass die sendende Seite beim Senden im ASCII-Modus die Datei in "Standardform" mit CRLF-Zeilenenden senden muss, und der Empfänger "konvertiert die Daten vom Standardformular in sein eigenes internes Formular". (Siehe Abschnitt 3.1.1.1, ASCII-Typ.)
Es scheint also, dass in Ihrem Fall die sendende Seite die Datei mit CRLF-Zeilenenden gesendet hat, da das FTP-Protokoll dies erfordert und die empfangende Seite sie aus irgendeinem Grund speichert.