2

Используя команду FTP, я перенес XML-файл из коробки Red Hat Enterprise Linux, которая находится в Европе, в другую коробку RHEL в Соединенных Штатах. Я не указывал режим передачи, поэтому по умолчанию он был ASCII, который, насколько я понимаю, никогда не должен переводить символы между двумя блоками Linux, но он это сделал. Размер файла увеличился в месте назначения, и vim сообщил о нем как о файле DOS. Я проверил и LANG = en_US.UTF-8 на обеих машинах.

Кто-нибудь знает, почему произошел перевод этого символа?

2 ответа2

1

Это именно то, что делает режим ASCII. Это переводит концы строк.

Если вы не хотите этого, просто переключитесь в двоичный режим, который передает данные как есть без какого-либо преобразования.

В наши дни вам вряд ли когда-нибудь понадобится режим ASCII. Особенно не для файлов XML.

0

RFC 959 говорит, что при отправке в режиме ASCII отправляющая сторона должна отправить файл в "стандартной форме" с концами строк CRLF, а "получатель преобразует данные из стандартной формы в свою собственную внутреннюю форму". (См. Раздел 3.1.1.1, Тип ASCII.)

Таким образом, похоже, что в вашем случае отправляющая сторона отправила файл с концами строк CRLF, потому что этого требует протокол FTP, а принимающая сторона по какой-то причине сохраняет их.

Я нашел следующую страницу, на которой по умолчанию написано, что FTP-сервер в Red Hat Enterprise Linux 3 и 4 делает вид, что разрешает режим ASCII, но в любом случае выполняет двоичную передачу: Почему FTP-серверу vsftp не удается передать файл в режиме ASCII, когда ASCII режим был установлен FTP-клиентом в Red Hat Enterprise Linux 3 и 4?

Так что это может объяснить, почему он держит CRLF-концы строк.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .