当前位置:  技术问答>linux和unix

写文件过程被中断了 数据不一致 如何保证?

    来源: 互联网  发布时间:2017-04-02

    本文导语:  有一个文件 很大  进程不断的往里面写  每次写的过程:先读文件 ,然后修改,然后写文件 突然被中断了 写过程也被中断了,这样数据就不一致了  建书 有没有什么好的办法来保证数据的一致性? open的时候加o...

有一个文件 很大 
进程不断的往里面写 
每次写的过程:先读文件 ,然后修改,然后写文件
突然被中断了 写过程也被中断了,这样数据就不一致了 
建书 有没有什么好的办法来保证数据的一致性?
open的时候加o_sync这个flag也没有用 这个还是有个时间差 没办法保证
o_direct对文件读写块有限制,需要对程序做过多的修改

请教诸位大牛 有什么好的办法没?

|
分块写,每块校验,错了重写

|
断电时时刻刻啊,内核都没法保证不对数据或者数据不错。。

|
你的需求肯定要写临时文件的, 最后再move回去.

你断电肯定是断在写临时文件上, 不会写坏原文件, 数据该丢还是要丢的。


|
但如果的确是要求一直操作一个文件, 那么我觉得自定义格式, 在每一个包的头尾加上magicnumber来做校验就差不多了,不需要计算crc之类的。

|


记得文件编辑时不是正常退出了话,系统会产生一个XXX.swp文件。
这应该就是qq120848369提到的临时文件概念。

|

楼上已经解释了,可以考虑crc校验,临时文件我觉得也是办法
至于内核的机制,这点没研究过

|
对,日志式系统比如ext3/4、NTFS只能保证文件系统的一致性和结构完整性,但是无法保证数据。
有的时候为了恢复文件系统日志,可能会把损坏的数据文件清空。
另外很多系统的系统组件修改重要文件的时候,都是先创建临时文件,再删掉旧文件,然后重命名的。直接去修改肯定不是很安全。

    
 
 

您可能感兴趣的文章:

  • 中断对于文件系统挂载有何作用?
  • 在中断服务程序里可以进行文件的读写操作么?
  • 上传文件时,如何在读取文件内容之前中断读取,并返回客户端错误信息?
  • linux在哪个文件中填写中断向量表的?
  • 在linux中断模式下如何显示汉字啊(有字库文件,想直接朝fb设备里画)
  • scp传输大文件经常中断,提示远程服务器没有反应
  • solaris 10 下怎么安装jdk-6u5-solaris-i586.sh? ftp上传大文件中断怎么解决?
  • linux 文件系统怎样保证文件系统一致性
  • 如何将mysql的数据文件移到指定目录,而且要保证mysql要运行正常.
  • 如何保证在计算机异常被启动时,文件不丢失(LINUX)
  • 如何保证 .properties 文件修改后的参数顺序与原来一样
  • UNIX系统下,进程写文件,写了很大量的文件,但是进程被KILL -9杀掉,系统可以保证写缓冲上的文件写到系统吗?
  • 如何保证ftp上传完一个文件后,服务器端的程序再处理.
  • 求助。。。怎样保证并发的多线程不要同时操作同一个文件?
  • 来一个高难的问题:怎样能保证文件的物理连续存储?或者说如何能最大限度提高文件I/O的效率?
  • 如何将linux分区转成windows分区,保证文件一个不丢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • FastDFS分布式文件系统介绍和FastDFS的安装配置过程
  • 急!如何从一个shell文件中传递一个参数到sql文件中,不能用存储过程
  • win2003:复制过程中要oem .bin文件? (在线等)
  • mssql server 存储过程里,bulk insert table from '路径+文件',路径固定,文件名不固定的实现方法
  • mysql 精简过程(删除一些文件)
  • linux下如何将安装过程中出力的log保存到文件里
  • 启动过程中,文件系统检查有错误!该怎么样修复??
  • win7下硬盘安装fedora14的过程中找不到镜像文件
  • linux下利用fwrite文件写入过程中突然断电的处理
  • 请教由一个源文件到程序最终执行过程的几个问题
  • 1.除了在安装过程中设置共享分区外,redhat_linux9怎样察看win2000—fat32下的文件,比如读取txt文件,播放mp3等。
  • 在shell文件中,有一个处理是安装一个软件,在安装过程中需要输入一次yes,现在希望能自动输入,怎么做?
  • 我的Linux无法启动X window 好像是安装过程中损坏文件所致,如何办?
  • 编译内核过程中, make xconfig出现的找不到文件errno.h的问题
  • RPM安装包制作过程正常结束却为什么没有生成.rpm文件??
  • 【高手和版主帮忙啊】请教linux移植过程中二进制中文文件的乱码问题
  • java Class文件内部结构解析过程详解
  • 如何将sql执行的错误消息记录到本地文件中实现过程
  • 监控 log文件大小的存储过程
  • 将mater库中的系统存储过程批量生成*.sql文件 通用且非常实用
  • 通过Android trace文件分析死锁ANR实例过程
  • C++ I/O 成员 eof():如果处于文件结尾处则返回true
  • Shell脚本如何递归现实一个文件夹中的文件(文件夹中含有文件夹)
  • WinDows8最新版文件夹加密
  • 求命令:什么命令可以把文件夹下所有的文件按修改时间先后排出来,包括子文件夹里的文件。
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • [提问]Linux下如何把多个.a文件编译一个.so文件,或者把多个.so文件编译成一个.so文件
  • python异常信息堆栈输出到日志文件
  • 请问:proc中的头文件中能包含头文件吗?(感觉如果头文件中包含头文件的话,在链接时就会有错误啊)
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 我要实现当进程打开文件时,根据文件名判断是否符合要求,符合后处理文件,再把文件返回给进程,怎么实现啊


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,