首页 文章

父目录的fsync是否保证所有递归子目录的元数据同步?

提问于
浏览
2

目前我正在编写一个Android应用程序,需要在本机端处理大量文件 .

最近,在更新或重命名这些文件时,我遇到了一些数据丢失或不一致问题 . (所有这些文件都存储在公共父/根目录的多个子目录中 . )

在阅读了几篇关于fsync()的文章后,我决定使用它 . 但是我有一件事不清楚:

在父目录上调用fsync()是否可以保证所有子目录的元数据同步递归?

也就是说,假设我在公共父目录中的不同子目录中对多个文件进行了大量重命名操作 .

那么我应该单独调用每个子目录上的fsync()还是在我的父目录上调用fsync()足以确保所有子目录(及其子目录递归)的元数据与物理设备同步?

基本上,这个想法是通过避免多个fsync()调用来节省时间 . 或者,与每个子目录上的fsync()相比,顶级目录上的fsync()需要更多时间吗? (假设顶级目录上的fysnc()同步所有子目录元数据)

1 回答

  • 2

    当在目录上调用fsync时,该操作将其目标更像文件而不是文件容器 . 从文件系统的角度来看,目录是一种特殊类型的文件,恰好包含有关其他文件的元数据 . 将fsync应用于目录时,将同步有关所包含文件的元数据,但不会同步子目录/文件本身 .

    如果要确保所有内容都已正确同步,则应明确地对它们进行同步 .

相关问题