重命名()没有fsync()安全吗?

Ivo*_*lka 26 linux rename fsync ext4

rename(tmppath, path)没有先拨打电话是否安全fsync(tmppath_fd)

我希望路径始终指向一个完整的文件.我主要关心的是Ext4.在所有未来的Linux内核版本中,rename()承诺是否安全?

Python中的一个用法示例:

def store_atomically(path, data):
    tmppath = path + ".tmp"
    output = open(tmppath, "wb")
    output.write(data)

    output.flush()
    os.fsync(output.fileno())  # The needed fsync().
    output.close()
    os.rename(tmppath, path)
Run Code Online (Sandbox Code Playgroud)

seh*_*ehe 28

没有.

看看libeatmydata,这个演讲:

吃我的数据:每个人如何获取文件IO错误

http://www.oscon.com/oscon2008/public/schedule/detail/3172

来自MySql的Stewart Smith.

如果它离线/不再可用,我会保留一份副本:

  • 不幸的是,您的副本不再可用 (2认同)
  • 我在 https://www.youtube.com/watch?v=LMe7hf2G1po 找到了该视频 (2认同)