另一个文件系统上的磁盘使用情况

另一个文件系统上的磁盘使用情况

我的 ext4 分区上有一个目录,其中有很多相当小的文件。如果我将它们复制到具有其他簇大小的文件系统(而不实际复制它们),我如何计算出它们将使用多少空间?就像 FAT16 一样,簇大小为 32KB。

答案1

我不知道是否有一个特定的工具可以做到这一点,但如果我真的想弄清楚,我会做一些类似的事情(当然,在脚本/程序中):计算文件并将其乘以簇的大小。当然,我需要检查它们的“范围”(我的意思是查看它们的大小并检查是否需要 4、8、32 或 64 KB 集群)。

这只是一个想法,我很可能是错的。但除非其他人知道可以为您完成此任务的程序,否则您至少可以轻松地进行估计。

答案2

这是一个 bash/awk 脚本:

#!/bin/bash
find . -type f -printf '%s\n' | awk '
    function ceil(number) {
        if (number == int(number)) {
            return (number);
        }
        return int(number) + 1;
    }

    function ceilWithUnit(number, unit) {
        return ceil(number / unit) * unit;
    }

    BEGIN {
        blockSize = 32 * 1024;
        fileSizeSum = 0;
        diskUsage = 0;
    }
    {
        diskUsage += ceilWithUnit($0, blockSize);
        fileSizeSum += $0;
    }
    END {
        printf("File count: %u\n", NR);
        printf("Average size: %.2f KB\n", fileSizeSum / NR / 1024);
        printf("Disk usage with %d bytes blocks: %.2f MB\n", blockSize, diskUsage / 1024 / 1024);
    }
'

相关内容