ASCII против бинарных против авто?

16

Я передаю файлы между серверами и только начал замечать, что некоторые из них видоизменяются в одну длинную непрерывную строку, а не возвращаются и переносят строки, которые у них были изначально. Я предполагаю, что это как-то связано с типом передачи моего FTP-клиента, который изначально был установлен на «Авто», но с дополнительными опциями - «Бинарный» и «ASCII».

Короче говоря, каковы различия между способами передачи файла с одного сервера на другой, и смогут ли эти различия изменить файл таким образом, как я упоминал выше?

Перенос ОТ Windows , К Linux.

Сэмпсон
источник

Ответы:

27

«Двоичный» режим передачи FTP копирует файлы точно, байт за байтом. Просто и понятно.

Однако при переносе текстовых файлов между разными операционными системами это может быть не тем, что вам нужно - разные операционные системы используют разные коды для представления переносов строк. Для этого существует режим «ASCII»: он автоматически переводит все окончания строк из формата исходной системы в пункт назначения.

Не уверен насчет «Авто», но я представляю, что похоже, что расширение файла или что-то подобное решает, является ли это текстовым файлом, и пытается угадать соответствующий режим.

Какой режим вам нужен, зависит от того, что именно вы делаете с файлами ... если вы просто копируете их для резервного копирования, то вам, вероятно, захочется копировать в двоичном режиме, чтобы они были точно такими же, когда Вы позже восстановите их на сервер Windows снова. Если их необходимо использовать в виде текстовых файлов (возможно, в виде файлов конфигурации для кроссплатформенной программы?) С обеих сторон, вам потребуется использовать режим ASCII для их перевода.

EDIT: Насколько я могу судить, по протоколу FTP файлы из Windows , в Linux никогда не должны приводить к разрывам линии исчезают ... Однако , если вы копируете их в режиме ASCII, а затем вернуть их обратно на сервер Windows , в двоичном режиме, Linux Окончания строк в стиле могут не распознаваться в окне Windows. (Блокнот их не увидит; Wordpad увидит; YMMV с другим программным обеспечением.)

(Сегодня такое удобство - автоматическое преобразование концов строк - может показаться странным в таком базовом протоколе, как FTP. Однако когда был изобретен FTP, отправка текстовых файлов была нормой, и одной из целей протокола было это как можно проще.)

мистифицировать
источник
Отличное описание обоих. Я чувствую себя гораздо менее смущенным сейчас.
Сэмпсон
спасибо, я никогда не понимаю смысл этого режима ASCII, и теперь я определенно буду использовать только двоичный режим
Kiwy
3

Различия действительно есть, и они будут возиться с передачей файлов не в текстовом формате, если вы не используете двоичную опцию - обычно всегда используйте, если хорошо :)

Chopper3
источник
Нет ли способа их восстановить? Или мне просто нужно перейти с Binary сейчас, чтобы избежать этого в будущем?
Сэмпсон
Я уверен , что вы могли бы распускать их , но это может занять много времени, я бы сильное искушение ретранслировать их.
Chopper3
1

Из какой операционной системы вы переносите файлы в / из? Linux / Unix используют разные переводы строк, чем Windows. Так что если вы сгенерируете файл на компьютере с Linux и откроете его в Windows, это может выглядеть странно. Есть утилиты для исправления этого, хотя по моему опыту, если вы используете WordPad на Windows вместо блокнота, все будет в порядке.

einstiien
источник
Я создаю их на Windows в IDE, а затем перемещаю их на сервер Linux. Позже я открываю их с сервера Linux, чтобы найти длинную непрерывную линию.
Сэмпсон
Попробуйте запустить dos2unixи посмотреть, исправит ли это строки
einstiien
1

Windows и Unix имеют разные байты в конце строк (Windows - гекс 0D 0A, Unix - просто 0A). При передаче файлов в двоичном режиме байты файла будут перемещены с одного компьютера без изменений. Это требуется для двоичных форматов (например, ZIP-файлов, изображений и т. Д.), Но может привести к проблемам с текстовыми файлами: например, notepad.exe в Windows отобразит текстовый файл с разрывами строк в стиле Unix в виде одной длинной строки, редактор Unix может показывать ^ M в конце каждой строки при просмотре стиля Windows.

Таким образом, технически для двоичных форматов (zip, jpg, png и других) вам нужно установить FTP на BINARY, в то время как для текстовых форматов (HTML, PHP, CGI и т. Д.) Вам нужно установить его в ASCII.

Большинство хороших программ FTP также имеют автоматическую настройку, что означает, что они будут определять режим (BINARY или ASCII) в зависимости от хорошо известных расширений файлов, например, он автоматически переключит передачу для файла JPG в BINARY и отправит / получит файл PHP в ASCII. Режим.

Yamodax
источник