Когда я перезаписываю удаленный файл локальной копией, FileZilla успешно передает и перезаписывает файл, но я замечаю, что новый размер удаленной копии на несколько КБ меньше, чем фактическая локальная копия. Почему это происходит?
4 ответа
Я полагаю, что meder относится к различным концам линий между Linux и Windows. В то время как * NIX используют только один символ (ASCII 10) для разрыва строки, Windows использует 2 (ASCII 13 + ACII 10).
Программы FTP обычно имеют режим "Передача текста" или "Передача ASCII" (по сравнению с режимом "Двоичная передача"), который автоматически преобразовывает эти символы при необходимости.
Таким образом, если ваш файл имеет 1000 строк, он больше на 1 КБ в Win, чем в системах * NIX.
В Filezilla вы можете определить режим передачи через Transfer
-> Transfer Mode
в строке меню.
Может быть еще одна причина, о которой я могу подумать, хотя это весьма непросто. Если вы вычисляете килобайты, вы можете установить 1 КБ = 1024 байта (единица СИ) или вы можете установить 1 КБ = 1000 байтов (единица IEC, обратите внимание на "Ки" вместо "k"). Это также приведет к разным размерам, но во всех случаях я знаю, что размеры рассчитываются одинаково на обеих сторонах соединения.
Возможно, это связано с разницей между "Размер" и "Размер на диске":
Размер - это фактический размер файла в байтах.
Размер на диске - это фактический объем места, занимаемого на диске.
Таким образом, если размер вашего сектора составляет 512 байт, а размер файла - 513 байт, размер на диске будет 1024 байт, поскольку он занимает два сектора.
Поскольку разные O/S или диски могут использовать разные размеры секторов, если сообщаемый размер - "Размер на диске", то размеры будут отличаться.
Если сервер является другой ОС, то это было бы причиной (например, сервер = Linux, локальный = Windows). Или это может быть из-за того, что некоторые байты были уничтожены вашим действием или вашим текстовым редактором (пробелы по-разному обрабатываются разными редакторами). Это было бы приличное предположение, фактически не видя разницы между ними.
Я заметил это несоответствие при копировании файлов из Unix-подобной системы DOMAIN/OS в Windows, но, поскольку я всегда использую двоичную передачу (даже с текстовыми файлами), мне пришлось искать объяснение в другом месте.
Я заметил, что в моей системе исходный размер файла выражается в виде целого числа буферов: кратных 32 КБ, и что при передаче файла учитываются только фактические байты файла.
Но я использую странную, античную систему и думаю, что объяснение медера, скорее всего, будет правильным.