gpt4 book ai didi

linux - 如何从 ext2/ext3 文件系统上的稀疏文件中删除一些 block

转载 作者:IT王子 更新时间:2023-10-29 00:37:54 25 4
gpt4 key购买 nike

当你写一个稀疏文件时,ext2/ext3 文件系统会自动分配 block ,但是当我不再需要它们的一些 block 时,我找不到办法去做。感觉就像在没有 free() 的情况下使用 malloc()。是否可以“释放”稀疏文件的某些 block ?如果是,怎么办?不要告诉我将它复制到一个新文件。它太无聊了,需要大量磁盘空间。

最佳答案

从 Linux 2.6.38 开始,有一个标志 fallocate称为 FALLOC_FL_PUNCH_HOLE 应该做你想做的,即在任意位置释放文件空间。

fallocate(fd, FALLOC_FL_PUNCH_HOLE|FALLOC_FL_KEEP_SIZE, offset, len);

将在描述符 fd 指示的文件中打一个洞。空洞将从 offset 开始,长度为 len,均以字节为单位。实际上只会删除整个 block ,部分 block 将被清零。

关于linux - 如何从 ext2/ext3 文件系统上的稀疏文件中删除一些 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1265192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com