0

我正在尝试自动确定目录将创建的 ext2 ramdisk 文件系统的大小。我目前正在做的是:

BLOCK_COUNT=`du $RAMDISK_FS_DIR| tail -1 |awk '{print $1}'

dd if=/dev/zero of=ramdisk.img bs=1024 count=$BLOCK_COUNT
mke2fs -F ramdisk.img -L "ramdisk" -b 1024 -m 0
tune2fs ramdisk.img -i 0

但是当我安装并cp -r $RAMDISK_FS_DIR进入时,ramdisk.img我会收到这样的消息

cp: cannot create directory `ramdisk/var/www': No space left on device

我确定在我的这种特定情况下,将 BLOCK_COUNT 增加 48 个块正是我需要多少才能使操作成功。我需要一种方法来找到任意目录大小的这个数字。

请注意,我的主机文件系统是 ext4。

4

1 回答 1

2

我不认为一般来说有一个好方法可以做到这一点。通常,文件系统中的超级块、inode 表、块位图和各种其他结构的大小会根据文件系统的大小和其中的内容而有所不同。即使文件占用的空间(由 计算du)在源文件系统上也可能与目标文件系统上的不同。

我想知道您为什么要创建一个大小与其内容完全相等的文件系统。由于这个文件系统在构建后总是满的,你不能向它添加任何东西(除非你先删除东西),这让我觉得它可能是只读的。如果它是只读的,为什么不使用专门用于此类应用程序的文件系统类型,例如cramfssquashfs ?

于 2013-02-21T14:00:57.043 回答