如何计算 FAT 分区适合给定文件的最小大小?

如何计算 FAT 分区适合给定文件的最小大小?

有没有办法计算出一个分区需要多大才能容纳一个文件(或给定大小的几个文件)?

假设我想在 USB 驱动器上创建一个 FAT32 分区并在其中存储 1 Gb 的文件(或两个 500 Mb 的文件,或其他任何文件),并且我希望该分区尽可能小。

除了反复试验之外,还有什么算法可以计算这个分区的大小?

答案1

这取决于簇大小(通常为 4 KB,但格式化时可以选择其他值)以及存储了多少个文件。任何文件都将使用至少一个簇,大于一个簇的文件将使用整数个簇,并在末尾占用一些不需要的空间,极少数例外。您只需将每个文件的簇大小向上舍入(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 fs 本身的空间方面的一些开销。也许是 5 MB?

相关内容