Zrobiłem kopię zapasową z mojego serwera FTP za pomocą lftp i Transmit (aplikacja Mac). Wszystko jest w porządku, ale rozmiar pliku jest inny dla 1-2 plików, ale są one identyczne.
Pierwszy plik:
http://dl.dropbox.com/u/229956/deadcow_seo.php
Drugi plik:
http://dl.dropbox.com/u/229956/deadcow_seo.php_2.php
Jaka jest różnica między tymi dwoma plikami?
Odpowiedzi:
deadcow_seo.php
używa końcówek linii Unix (LF
), adeadcow_seo.php_2.php
końcówek linii DOS / Windows (CR LF
).FTP ma kilka „trybów przesyłania”, z których dwa są powszechnie używane 1 - binarny (zwany również „obrazem”) i tekstowy (lub „ASCII”). W trybie „binarnym” plik jest przesyłany dokładnie tak, jak jest, bajt po bajcie, natomiast „ASCII” powoduje, że plik jest interpretowany jako składający się z linii tekstu - zakończenia linii są konwertowane na standard sieciowy
CR LF
podczas wysyłania, a konwertowane na rodzime zakończenia linii podczas odbierania.Przesyłanie plików jako tekstu może początkowo mieć jakiś sens, ale powoduje problemy później - w rzeczywistości niektóre serwery FTP usunęły go całkowicie lub równoważą plik binarny po stronie serwera. Poza tym większość edytorów tekstu (oprócz Notatnika) może odczytywać i zapisywać pliki zarówno w formacie Windows, jak i Unix.
Wystarczy skonfigurować klienta FTP, aby zawsze korzystał z trybu binarnego - polecenie jest zwykle
bin
lubmode i
, podczas gdy klienci graficzni mogą mieć pole wyboru lub listę typów plików w swoich ustawieniach.1 Niektóre stare tryby to „tenex” ( długo przestarzały, dla plików opartych na stronach TENEX ) i „skompresowany” (który wydaje się być zdefiniowany jako prosty algorytm RLE). Najnowsze serwery FTP obsługują „tryb Z” dla kompresji Zlib.
źródło
Użyłeś tekstu (lub ASCII) tryb transferu, który zastępuje podziały wiersza podczas transferu. Jest to często przydatne podczas tworzenia skryptów i programów w systemie Windows i przesyłania plików do systemu Linux lub Mac OS X. Po prostu nie będą działać inaczej, ponieważ system widzi dane śmieci na końcu każdej linii.
Jeśli plik ma pojedynczy podział wiersza systemu Windows
\r\n
(lubCRLF
) i został pobrany do systemu Linux lub Mac OS X, został zastąpiony przez\n
(lubLF
), co oznacza 1 bajt mniej. Użycie FileMerge do porównania plików potwierdza to na pasku stanu:Zobacz także tę odpowiedź na temat interpretacji danych .
Możesz skonfigurować, które typy plików są interpretowane jako tekst w preferencjach Transmit:
Możesz usunąć wszystkie rozszerzenia plików z tej listy i po prostu ujednolicić podział linii w systemie Linux / Mac OS X, to znaczy
\n
nawet w systemie Windows. Większość edytorów jest w stanie zmienić tryb zakończenia linii.źródło