Как рассчитать минимальный размер раздела FAT для размещения заданных файлов?

Как рассчитать минимальный размер раздела FAT для размещения заданных файлов?

Есть ли способ рассчитать, насколько большим должен быть раздел, чтобы вместить файл (или несколько файлов заданного размера)?

Допустим, я хочу создать раздел FAT32 на USB-накопителе и сохранить там файл размером 1 Гб (или два файла по 500 Мб, или что-то еще), и я хочу, чтобы раздел был как можно меньше.

Какой алгоритм может использоваться для расчета размера этого раздела, помимо метода проб и ошибок?

решение1

Это зависит от размера кластера (обычно 4 КБ, но вы можете выбрать другие значения при форматировании) и от того, сколько файлов хранится в этом 1 ГБ. Любой файл будет использовать как минимум один кластер, а файлы, превышающие кластер, будут использовать целое число кластеров, занимая некоторое неиспользуемое пространство в конце за очень редкими исключениями. Вам просто нужно округлить (ceil) до размера кластера для каждого файла.

from math import ceil

def calculate_fat32_used_space(file_sizes, cluster_size=4096):
    clusters_used = [ceil(size / cluster_size) for size in file_sizes]
    total_clusters = sum(clusters_used)
    return total_clusters * cluster_size
print(calculate_fat32_used_space([536870912, 536870912])) # For two 500MB files

Все размеры в байтах (легко конвертировать в любой). Просто получите массив размеров файлов в качестве параметра и все. Адаптировать это для работы с другими размерами единиц должно быть тривиально. Я бы также учел некоторые накладные расходы в плане пространства для самой файловой системы FAT32. Может быть, 5 МБ?

Связанный контент