Ten sam plik, inny rozmiar pliku

12

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?

user66638
źródło
Czy jesteś pewien, że problemem nie był tylko zgłoszony rozmiar? Firma Apple zmieniła sposób, w jaki Mac OS X zgłasza miejsce do przechowywania kilka lat temu, aby dostosować się do metody stosowanej przez producentów dysków twardych. Zamiast 1 MB = 1024 KB używają 1 MB = 1000 KB. Inny rozmiar może zostać zgłoszony przez hosta Linuxa przy użyciu innej metodologii, więc pliki wydają się mieć różne rozmiary. Nie jestem pewien, czy dotyczy to twojego przypadku, ale mimo to jest interesujące.
WebDevKev
To nie to. Wystarczy spojrzeć na pliki, które podał jako część pytania, lub zrzut ekranu diff w mojej odpowiedzi. Nawiasem mówiąc, pliki nie są wystarczająco duże, aby mogły coś zmienić, każdy o 1800-1900 bajtów.
Daniel Beck

Odpowiedzi:

25

deadcow_seo.phpużywa końcówek linii Unix ( LF), a deadcow_seo.php_2.phpkoń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 LFpodczas 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 binlub mode 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.

użytkownik1686
źródło
12

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(lub CRLF) i został pobrany do systemu Linux lub Mac OS X, został zastąpiony przez \n(lub LF), co oznacza 1 bajt mniej. Użycie FileMerge do porównania plików potwierdza to na pasku stanu:

wprowadź opis zdjęcia tutaj

Zobacz także tę odpowiedź na temat interpretacji danych .


Możesz skonfigurować, które typy plików są interpretowane jako tekst w preferencjach Transmit:

wprowadź opis zdjęcia tutaj

Możesz usunąć wszystkie rozszerzenia plików z tej listy i po prostu ujednolicić podział linii w systemie Linux / Mac OS X, to znaczy \nnawet w systemie Windows. Większość edytorów jest w stanie zmienić tryb zakończenia linii.

Daniel Beck
źródło