当您写入稀疏文件时,ext2/ext3 文件系统会自动分配块,但是当我不再需要其中的某些块时,我发现没有办法做到这一点。感觉就像使用 malloc() 而不使用 free()。
是否可以“释放”稀疏文件的某些块?如果是的话,怎么样?
不要告诉我将其复制到新文件中。这太无聊了并且需要大量的磁盘空间。
从 Linux 2.6.38 开始,有一个标志fallocate http://www.man7.org/linux/man-pages/man2/fallocate.2.html called FALLOC_FL_PUNCH_HOLE
它应该做你想要的,即在任意位置释放文件空间。
fallocate(fd, FALLOC_FL_PUNCH_HOLE|FALLOC_FL_KEEP_SIZE, offset, len);
将在描述符 fd 指示的文件中打一个洞。该洞将从offset
并且有长度len
,均以字节为单位。实际上只会删除整个块,部分块将被清零。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)