当前位置: 首页 > 面试题库 >

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

田骁
2023-03-14
问题内容

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)

问题答案:

没有。

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

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

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

来自MySql的Stewart Smith。



 类似资料:
  • 问题内容: 我无法通过实验进行检查,也无法从手册页中收集到它。 说我有两个过程,一个是将文件1从目录1移动(重命名)到目录2。假设正在运行的另一个进程同时将directory1和directory2的内容复制到另一个位置。复制是否可能以这种方式发生,即目录1和目录2都将显示文件1-即,目录1在移动之前被复制,目录2在移动之后被第一个进程复制。 基本上,rename()是原子系统调用吗? 谢谢 问题

  • fsync(将缓冲区数据写回磁盘) 相关函数 sync 表头文件 #include<unistd.h> 定义函数 int fsync(int fd); 函数说明 fsync()负责将参数fd所指的文件数据,由系统缓冲区写回磁盘,以 确保数据同步。 返回值 成功则返回0,失败返回-1,errno为错误代码。 范例: 无

  • fsync 将缓冲区数据写回磁盘 相关函数 sync 表头文件 #include<unistd.h> 定义函数 int fsync(int fd); 函数说明 fsync()负责将参数fd所指的文件数据,由系统缓冲区写回磁盘,以确保数据同步。 返回值 成功则返回0,失败返回-1,errno为错误代码。

  • Fsync 是一个 Perl 脚本,它允许远程主机之间进行文件同步,其功能类似于 rsync 和 CVS 软件包。 由于 fsync 是单个 Perl 脚本,因此在新计算机上设置文件同步相对简单。主机之间的通信通过套接字机制或通过 rsh(或 ssh)连接进行,远程服务器由 rsh、ssh 或手动启动。Fsync 支持使用钩子合并本地/远程主机的差异以合并树的工具的概念。 它需要 perl 5.004 或更高版本。

  • [从电话到web服务器]发送包含预订信息的请求令牌。 [从web服务器到带区]发送存储在web服务器上的信用卡数据。 [从条带到web服务器]返回令牌。 [从web服务器到带区]发回令牌,确认事务。 [从带区到web服务器]事务响应。 [从web服务器到电话]事务响应。 显然,主要的区别是从将带有预订请求信息的令牌发送到web服务器开始,而不是将信用卡数据发送到Stripe。这就避免了必须不断询问

  • 我正在STS中使用Spring Boot构建一个简单的REST API。 我有一些基本的安全需求,类似于在这里的原始文章中描述的:通过Spring的RESTful身份验证 上面接受的答案似乎是一个有效的解决方案,但由于缺少XML配置,无法转换为Spring Boot。 我如何以同样的方式配置我的Spring Boot应用程序?