在 ext4 上编辑文件是否会创建额外的副本?

在 ext4 上编辑文件是否会创建额外的副本?

假设我有包含字符串 ABCD 的文件 X。然后我使用打开 X 编辑该文件,搜索至 0,截断,写入 1234。ABCD 会保留在硬盘上的任何地方吗?假设它是大文件,包含多个扇区/inode。

答案1

据我所知,如果您截断文件,则无法保证会为下一次写入操作分配相同的块。在这种情况下,您最终会得到旧块中的数据副本。

如果您使用的是 SSD,即使您逐字节覆盖数据且无论文件系统如何,都一定会发生这种情况,因为出于性能原因,SSD 始终是写时复制的。

答案2

不会。此外,文件锁定可用于防止这种情况发生,但这取决于程序开发人员。

相关内容