В большинстве файловых систем для хранения файлов используется кластер фиксированного размера (4 КБ, но не универсальный). Файлы ниже этого размера кластера будут занимать одинаковое минимальное количество.
Даже выше этого размера пропорциональные потери имеют тенденцию быть высокими, когда у вас много маленьких файлов. Игнорирование асимметрии распределения по размеру (что усугубляет ситуацию), общая потеря составляет примерно половину размера кластера, умноженную на количество файлов, поэтому чем меньше у вас файлов для данного объема данных, тем эффективнее вы будете хранить вещи.
Другое соображение заключается в том, что операции с метаданными, особенно удаление файлов, могут быть очень дорогими, поэтому, опять же, файлы меньшего размера не ваши друзья. В ReiserFS была проделана некоторая интересная работа, пока автор не был заключен в тюрьму за убийство своей жены (я не знаю, в каком состоянии находится этот проект).
Если у вас есть опция, вы также можете настроить размеры файлов, чтобы они всегда заполняли целое число кластеров, и тогда небольшие файлы не будут проблемой. Это, как правило, слишком привередливый, чтобы стоить того, хотя есть и другие затраты. Для пропускной способности большого объема оптимальный размер файла в наши дни составляет от 64 до 256 МБ (я думаю).
Практический совет: занесите свои вещи в базу данных, если нет веских причин не делать этого. SQLite существенно уменьшает количество причин.