一尘不染

不带fsync()的named()是否安全?

linux

rename(tmppath, path)fsync(tmppath_fd)先打电话就可以安全吗?

我希望路径始终指向完整的文件。我主要关心 Ext4 。是否可以在所有将来的Linux内核版本中都保证named()是安全的?

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)

阅读 326

收藏
2020-06-02

共1个答案

一尘不染

没有。

查看libeatmydata,以及此演示文稿:

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

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

来自MySql的Stewart Smith。

2020-06-02