ASCII проти Binary проти Auto?


16

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

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

Перенесення ВІД Windows , К Linux.

Відповіді:


27

Режим передачі «Бінарний» FTP точно копіює файли, байт за байтом. Простий і прямолінійний.

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

Не впевнений у "Авто", але я думаю, схоже, що розширення файлу чи щось подібне, щоб вирішити, чи це текстовий файл, і намагається відгадати відповідний режим.

У якому режимі ви хочете, залежить саме від того, що ви робите з файлами ... якщо ви просто копіюєте їх для створення резервної копії, ви, ймовірно, захочете скопіювати у двійковий режим, щоб вони були абсолютно однаковими, коли пізніше ви знову відновите їх на сервері Windows. Якщо вони повинні бути використані як текстові файли (можливо, як конфігураційні файли для міжплатформної програми?) З обох сторін, ви хочете використовувати режим ASCII для їх перекладу.

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

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


Чудовий опис обох. Зараз я відчуваю себе набагато менш розгубленим.
Сампсон

дякую, що я ніколи не розумію суть цього режиму ASCII, і тепер я обов'язково використовую лише двійковий режим
Kiwy

3

Дійсно, є відмінності, і вони будуть псуватися з вашими непересічними текстовими передачами файлів, якщо ви не використовуєте двійковий варіант - зазвичай завжди використовуйте, якщо добре :)


Чи немає способу відновити їх? Або мені просто потрібно перейти з Binary зараз, щоб уникнути цього знову в майбутньому?
Сампсон

Я впевнений, що ви можете зняти їх, але це може зайняти тривалий час, я дуже спокушаюсь їх повторно передати.
Chopper3

1

У яку операційну систему ви переносите файли в / з? Linux / Unix використовують різні розриви рядків, ніж Windows. Тож якщо ви генеруєте файл на комп’ютері Linux та відкриваєте його у Windows, це може виглядати дивно. Є утиліти, щоб виправити це, хоча, на моєму досвіді, якщо ви використовуєте wordpad у Windows замість блокнота, ви все будете добре.


Я створюю їх у 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 режим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.