Ascii mode ftp между двумя Linux-блоками делает нежелательный перевод CRLF
2593
Steve Prior
С помощью команды FTP я перенес XML-файл из коробки Red Hat Enterprise Linux, которая находится в Европе, в другую коробку RHEL в Соединенных Штатах. Я не указывал режим передачи, поэтому по умолчанию он был ASCII, который, насколько я понимаю, никогда не должен переводить символы между двумя блоками Linux, но он это сделал. Размер файла увеличился в месте назначения, и vim сообщил о нем как о файле DOS. Я проверил и LANG = en_US.UTF-8 на обеих машинах.
Кто-нибудь знает, почему произошел перевод этого символа?
2 ответа на вопрос
1
Joachim Sauer
Это именно то, что делает режим ASCII. Это переводит концы строк.
Если вы не хотите этого, просто переключитесь в двоичный режим, который передает данные как есть без какого-либо преобразования.
В наши дни вам вряд ли когда-нибудь понадобится режим ASCII. Особенно не для файлов XML.
Я думаю, что дело здесь в том, что это были две коробки Linux. Зачем переводить окончания строк в формат DOS?
14 лет назад
0
@Troubadour: с помощью для окончания строки предшествует DOS. RFC 765 определил его для текстового режима ftp в 1980 году, примерно за год до того, как IBM PC впервые появился на рынке.
14 лет назад
1
Да, это был вопрос.
14 лет назад
0
0
Bavi_H
RFC 959 говорит, что при отправке в режиме ASCII отправляющая сторона должна отправить файл в «стандартной форме» с концами строк CRLF, а «получатель преобразует данные из стандартной формы в свою собственную внутреннюю форму». (См. Раздел 3.1.1.1, Тип ASCII.)
Таким образом, похоже, что в вашем случае отправляющая сторона отправила файл с CRLF, потому что этого требует протокол FTP, а принимающая сторона по какой-то причине сохраняет их.