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

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.

Ich habe die folgende Seite gefunden, die besagt, dass der FTP-Server in Red Hat Enterprise Linux 3 und 4 standardmäßig den ASCII-Modus zulässt, aber trotzdem eine binäre Übertragung ausführt : Warum überträgt der vsftp-FTP-Server beim ASCII-Modus keine Datei im ASCII-Modus Modus wurde vom FTP-Client in Red Hat Enterprise Linux 3 und 4 eingestellt?

Das könnte erklären, warum die CRLF-Zeilenenden beibehalten werden.