¿Hay alguna forma de calcular el tamaño que debe tener una partición para que quepa un archivo (o varios archivos de un tamaño determinado)?
Digamos que quiero crear una partición FAT32 en una unidad USB y almacenar un archivo de 1 Gb (o dos archivos de 500 Mb, o cualquier otra cosa) allí, y quiero que la partición sea lo más pequeña posible.
¿Cuál sería el algoritmo para calcular el tamaño de esta partición, además de prueba y error?
Respuesta1
Depende del tamaño del clúster (normalmente 4 KB, pero puede elegir otros valores al formatear) y de cuántos archivos se almacenan en este 1 GB. Cualquier archivo utilizará al menos un clúster y los archivos más grandes que un clúster utilizarán un número entero de clústeres, ocupando algo de espacio innecesario al final, con muy raras excepciones. Sólo necesita redondear (techo) al tamaño del grupo para cada archivo.
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
Todos los tamaños en bytes (fácil de convertir a lo que sea). Simplemente obtenga una serie de tamaños de archivo como parámetro y listo. Debería ser trivial adaptar esto para que funcione con otros tamaños de unidades. También tendría en cuenta algunos gastos generales en términos de espacio para el propio FAT32 fs. ¿Quizás 5 MB?