Цитата(Jaxx @ 3.01.2006 17:36)
Там есть такая штука: "Размер" и "На диске". Разницу видите? Например, у меня на рабочем компе папка Windows имеет размер 2.04 Гб, а на диске она занимает 2.2 Гб. Если диск большой, и файлов много, то потеря места может быть очень и очень значительная. Это происходит из-за фрагментации файлов, особенно под FAT.
Эффект есть, и он давно изучен. Информация на диске занимает больше места, чем ее реальный объем, но только
фрагментация тут абсолютно ни при чем . И тип файловой системы тоже ни при чем. Дело просто в том, что запись на диск происходит
поблочно, а не побайтово. Если размер файла не кратен размеру блока (как оно и бывает в 99% случаев), то остаток блока пропадает зря, и именно эти остатки и составляют ту самую разницу между суммарным размером файлов и местом, занимаемым ими на диске. Грубо говоря, распределение размеров файлов - случайное, и некоторые из них занимают больше места от последнего блока, некоторые - меньше. В среднем получается половина блока. Таким образом, потеря места на диске составляет примерно N*S/2 - где N - количество файлов, S - размер блока. При больших значениях N это соотношение выполняется очень точно. Вот пример одной из моих реальных папок (в ней лежат фотографии).
Size: 1,683,826,828 bytes
Size on disk: 1,688,113,152 bytes
2079 files
Если вычесть из второго числа первое и поделить разницу на число файлов, то получим 2044.4 байта - это число довольно неплохо равно половине размера блока, который у меня составляет 4КБ (4096Б). Видите - ошибка составила меньше 4 байт, что есть меньше 0.2% !
Если на диске много маленьких файлов, а размер блока большой, то потери несколько увеличиваются, но никогда не превзойдут N*S.
Повторяю: фрагментация тут совершенно ни при чем, так как размер фрагментов в точности кратен блоку. После проведения дефрагментации потери не уменьшатся ни на байт! А размер блока можно выбрать при форматировании диска (как в FAT32, так и в NTFS), и это нужно делать с умом. Если скорость чтения не критична, а пространство нужно экономить, и файлы мелкие - делай размер блока поменьше (1КБ), а если все наоборот - тогда побольше (типа 64КБ).
Я советую провести такой же анализ, как сделал я выше, только на весь диск. Посмотреть, сколько всего файлов, и поделить на это число размер потерянного пространства. Если получится половина блока - то не о чем беспокоиться.
Насколько я понимаю, если папку сжать, то физически вся она будет записана на диск одним файлом (по крайней мере так поступали старые проги, которыми я пользовался для этой цели, когда в винде еще не было собственного сжатия). И тогда этот эффект пропадает (не говоря уж о том, что файлы сжимаются). Но, конечно, я бы не стал рекомендовать делать это на часто используемые папки..