ASCII vs Binary vs Auto?

16

Przesyłam pliki między serwerami i właśnie zaczęłam zauważać, że niektóre z nich są modyfikowane, aby były jedną długą ciągłą linią, w przeciwieństwie do zwrotów i podziałów linii, które pierwotnie miały. Zakładam, że ma to coś wspólnego z typem transferu mojego klienta FTP, który początkowo był ustawiony na „Auto”, ale jako „dodatkowe opcje” używa „Binary” i „ASCII”.

Krótko mówiąc, jakie są różnice między sposobami przesyłania pliku z jednego serwera na drugi i czy różnice te będą w stanie zmodyfikować plik w sposób, o którym wspomniałem powyżej?

Przenoszenie Z systemu Windows DO Linux.

Sampson
źródło

Odpowiedzi:

27

Tryb transferu „Binarny” FTP kopiuje pliki dokładnie, bajt po bajcie. Prosty i bezpośredni.

Jednak przenoszenie plików tekstowych między różnymi systemami operacyjnymi może nie być tym, czego potrzebujesz - różne systemy operacyjne używają różnych kodów do reprezentowania podziałów linii. W tym celu istnieje tryb „ASCII”: automatycznie tłumaczy wszystkie zakończenia linii z formatu systemu źródłowego na format miejsca docelowego.

Nie jestem pewien co do „Auto”, ale wyobrażam sobie, że rozszerzenie pliku lub coś podobnego decyduje o tym, czy jest to plik tekstowy, i próbuje zgadnąć odpowiedni tryb.

Wybór trybu zależy od tego, co robisz z plikami ... jeśli tylko kopiujesz je w celu utworzenia kopii zapasowej, prawdopodobnie prawdopodobnie będziesz chciał skopiować w trybie binarnym, aby były dokładnie takie same, gdy później przywrócisz je ponownie na serwerze Windows. Jeśli muszą być użyteczne jako pliki tekstowe (być może jako pliki konfiguracyjne dla programu międzyplatformowego?) Po obu stronach, będziesz chciał użyć ich do tłumaczenia w trybie ASCII.

EDIT: O ile mogę powiedzieć, FTPing plików z Windows na Linuksa nigdy nie powinny powodować podziały wierszy znikają ... jednak , jeśli je skopiować w trybie ASCII, a następnie przenieść je z powrotem do serwera Windows w trybie binarnym, Linux zakończenia linii w stylu mogą nie zostać rozpoznane w polu Windows. (Notatnik ich nie zobaczy; Wordpad zobaczy; YMMV z innym oprogramowaniem).

(Dzisiaj taka wygoda - automatyczna konwersja zakończeń linii - może wydawać się dziwna w tak podstawowym protokole jak FTP. Jednak kiedy wynaleziono FTP, wysyłanie plików tekstowych było normą, a jednym z celów protokołu było stworzenie to tak proste, jak to możliwe.)

Josh
źródło
Świetny opis obu. Teraz czuję się znacznie mniej zdezorientowany.
Sampson,
dziękuję, nigdy nie zrozumiałem sensu tego trybu ASCII, a teraz na pewno będę używać tylko trybu binarnego
Kiwy
3

Rzeczywiście istnieją różnice i będą one bałagać się z przesyłaniem plików w formacie innym niż zwykły tekst, chyba że użyjesz opcji binarnej - zazwyczaj zawsze używaj, jeśli ok :)

Siekacz 3
źródło
Czy nie ma możliwości ich przywrócenia? Czy po prostu muszę teraz dokonać przelewu za pomocą Binary, aby uniknąć tego w przyszłości?
Sampson,
Jestem pewien, że mógłby je unpick ale może to zająć dużo czasu, będę mocno kuszony do ich retransmisji.
Chopper3
1

Do jakiego systemu operacyjnego przenosisz pliki do / z? Linux / Unix używają innych podziałów linii niż Windows. Więc jeśli wygenerujesz plik na komputerze z systemem Linux i otworzysz go w systemie Windows, może to wyglądać dziwnie. Istnieją narzędzia, aby to naprawić, ale z mojego doświadczenia wynika, że ​​jeśli używasz WordPada w Windows zamiast Notatnika, wszystko będzie dobrze.

einstiien
źródło
Tworzę je w systemie Windows w środowisku IDE, a następnie przenoszę je na serwer Linux. Później otwieram je z serwera Linux, aby znaleźć długą ciągłą linię.
Sampson,
Spróbuj uruchomić dos2unixi sprawdź, czy to
poprawi
1

Windows i Unix mają różne bajty na końcu linii (Windows a 0D 0A hex, Unix tylko 0A). Podczas przesyłania plików w trybie binarnym bajty pliku zostaną przeniesione z jednego komputera bez zmian. Jest to wymagane w przypadku formatów binarnych (np. Plików ZIP, obrazów itp.), Ale może prowadzić do problemów z plikami tekstowymi: np. Notepad.exe w systemie Windows wyświetli plik tekstowy z tylko podziałami linii w stylu unix jako jedną długą linię, edytor unix może wyświetlać ^ M na końcu każdej linii, gdy widzi styl Windows.

Więc technicznie dla formatów binarnych (zip, jpg, png i nieskończonych innych) musisz ustawić FTP na BINARY, podczas gdy dla formatów tekstowych (HTML, PHP, CGI itp.) Musisz ustawić go na ASCII.

Większość dobrych programów FTP ma również ustawienie automatyczne, co oznacza, że ​​określą tryb (BINARY lub ASCII) w zależności od dobrze znanych rozszerzeń plików, np. Automatycznie przełączy transfer pliku JPG na BINARY i wyśle ​​/ odbierze plik PHP w ASCII tryb.

Yamodax
źródło