Разница в размерах файлов на FTP-сервере и фактический размер файла

6091
Mahmoud Abdelkader

Я подключаюсь к FTP-серверу, чтобы загрузить некоторые сжатые файлы, и я заметил, что что-то немного смущает насчет команды SIZE, и мой google-fu не помог мне.

ftp> size file0001.xml.gz 213 2524751  ftp> nlist -ltr ... -rw-r--r-- 1 anon anons 2515727 Jan 30 00:00 file0001.xml.gz ... 

The file sizes are different, (2524751 != 2515727), as you can see. Why?

Я кратко прочитал ПРОТОКОЛ ФАЙЛА ПЕРЕДАЧИ RCF0959 (FTP), и там нет упоминаний о команде SIZE, которую я позже обнаружил как нестандартное дополнение к протоколу.

Вот немного о размере байта, для удобства, из RFC:

 byte size  There are two byte sizes of interest in FTP: the logical byte size of the file, and the transfer byte size used for the transmission of the data. The transfer byte size is always 8 bits. The transfer byte size is not necessarily the byte size in which data is to be stored in a system, nor the logical byte size for interpretation of the structure of the data. 

Что мне здесь не хватает?

Спасибо!

Махмуд

3

1 ответ на вопрос

6
Douglas Leeder

Вы переключили ftp в binaryрежим? ftp может вычислять размер с изменением конца строки?

2524751/2515727 * 255 = 255,91469384396638

Таким образом, похоже, что каждые 255 байтов в оригинале получают дополнительно 0,9 байта - достаточно, чтобы \nпреобразовать сжатый файл \r\n.

Привет, Дуглас! Извините, что вернулся к вам так поздно. Проблема была в том, что тип действительно был в формате ascii, я использовал его через ftplib в python. Когда я принудительно определял размер (retrbinary («RETR SIZE»)), он работал как ожидалось. Спасибо! Mahmoud Abdelkader 14 лет назад 0

Похожие вопросы