CN117873403B - office文档IO中tmp文件还原方法及其系统 - Google Patents
office文档IO中tmp文件还原方法及其系统 Download PDFInfo
- Publication number
- CN117873403B CN117873403B CN202410269092.7A CN202410269092A CN117873403B CN 117873403 B CN117873403 B CN 117873403B CN 202410269092 A CN202410269092 A CN 202410269092A CN 117873403 B CN117873403 B CN 117873403B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- object information
- restoring
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 117
- 238000001914 filtration Methods 0.000 claims abstract description 31
- 230000008569 process Effects 0.000 claims description 93
- 238000013506 data mapping Methods 0.000 claims description 16
- 238000013507 mapping Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 10
- 238000011282 treatment Methods 0.000 claims description 10
- 230000009467 reduction Effects 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 6
- 238000012986 modification Methods 0.000 abstract description 11
- 230000004048 modification Effects 0.000 abstract description 11
- 230000007246 mechanism Effects 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种office文档IO中tmp文件还原方法及其系统,属于计算机技术领域。所述方法包括:捕获IO步骤,获取第一对象信息步骤,创建记录数组步骤,第一判断步骤,第二判断步骤,查询还原步骤。所述系统包括:捕获IO模块,获取第一对象信息模块,创建记录数组模块,第一判断模块,第二判断模块,查询还原模块。本发明利用过滤驱动,并结合office文档的IO机制,帮助用户根据office文件修改产生的tmp文件IO识别出原文件,并根据识别结果自动将tmp文件修改成为原文件,操作灵活、方便。
Description
技术领域
本发明属于计算机技术领域,涉及一种office文档IO中tmp文件还原方法及其系统 。
背景技术
在计算机中的文件修改的过程大概如下:
修改内容:在内存中,程序对文件内容进行修改。
准备写入:一旦完成修改,程序准备将更改后的数据写回磁盘。在这个阶段,程序可能会使用缓冲区来组织数据,以便有效地写入存储设备。
触发写入操作:程序执行写入操作,将数据从内存传输到磁盘。这是一个关键的IO过程。
数据写入磁盘:一旦过滤驱动处理(或放行)IO请求,数据最终被写入磁盘。这个过程涉及将数据从内存复制到磁盘上的物理位置。
确认写入完成:写入操作完成后,文件系统会更新文件的元数据(如修改时间、大小等),并确认数据已成功写入。
一般文件每进行一次修改只会产生一次IO,但是office这类文件例外,它的IO机制比较特殊,它的IO信息中文件名是tmp文件,而不是原来的文件,同时tmp文件的常规名除了包含原来的文件常规名外,其最后六位会多出一个波浪符号和每次修改IO中均不同的五位随机十六进制数,这便给通过IO信息识别修改的原文件带来了困难,影响了磁盘IO监测中根据IO信息判断修改文件的效率。目前针对解决这一问题的技术几乎没有。
因此,如何帮助用户直接利用office文件的IO信息来识别修改的原文件,成为当前急需解决的技术问题。
发明内容
本发明为了解决上述背景技术中的技术问题,本发明实施例提供了一种office文档IO中tmp文件还原方法及其系统。所述技术方案如下:
第一个方面,提供一种office文档IO中tmp文件还原方法具有设置在内核层的过滤驱动和用户层的还原程序,所述方法包括步骤:
捕获IO步骤,启动过滤驱动捕获产生的IO,并将IO数据储存到内核层的IO数据栈中;
获取第一对象信息步骤,还原程序获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径;
创建记录数组步骤,还原程序创建记录数组,记录数组的每个元素由文件路径、文件拓展名、执行进程ID和进程名组成;
第一判断步骤,还原程序根据第一对象信息判断修改文件是否是锁文件,若是,则通过过滤驱动查询IO指令的执行进程,获取文件的第二对象信息,再将第一对象信息和第二对象信息存入记录数组;若否,则不做处理;其中第二对象信息包括执行IO的进程ID和进程名;
第二判断步骤,还原程序根据第一对象信息判断修改文件是否是tmp文件,若是,则以修改文件为目标tmp文件执行查询还原步骤;若否,则结束;
查询还原步骤,还原程序通过目标tmp文件的第一、第二对象信息查询记录数组中是否有目标tmp文件的匹配项,若有,则通过匹配项的第一对象信息将目标tmp文件还原;若没有,则结束。
在其中一个实施例中,在所述获取第一对象信息步骤之前,还包括:
创建IO数据链表步骤,还原程序在用户层创建IO数据链表,IO数据链表的每个节点由IO文件目录、IO写入字符数、IO位置偏移、写入数据和链表指针组成;
IO数据链表初始化步骤,还原程序创建IO数据链表头节点,然后创建IO数据链表的空节点,并将空节点链接到头节点上;
数据映射步骤,将IO数据栈中数据映射到初始化后的IO数据链表;
另外,所述获取第一对象信息步骤,还包括:
还原程序从映射数据后的IO数据链表中获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径。
在其中一个实施例中,所述数据映射步骤,包括:
数据转移步骤,还原程序沿着IO数据链表头节点查询到空节点A,并将IO数据栈中的数据映射到空节点A,获得节点B;
空间释放和新节点创建步骤,还原程序将映射数据后的IO数据栈空间释放,再创建一个空节点C链接到节点B上。
在其中一个实施例中,所述第一判断步骤,还包括:
锁文件判断步骤,还原程序根据第一对象信息中的文件名判断修改文件是否是锁文件,若是,则先通过过滤驱动查询IO指令的执行进程,获得第二信息对象,再执行匹配步骤,如果不是,则结束判断;
匹配步骤,还原程序在记录数组中查询进程ID或进程名,判断记录数组中是否存在与新增项的进程ID或进程名相同的原有项,若存在,则返回结果为匹配;若不存在,则返回结果为不匹配;
写入步骤,还原程序根据匹配结果进行不同处理,所述不同处理包括: 如果匹配则将新增项覆盖记录数组的原有项;如果不匹配,则将新增项作为一个新项写入记录数组。
在其中一个实施例中,所述查询还原步骤,包括:
查询步骤,还原程序根据目标tmp文件的第一对象信息中的文件路径和第二对象信息中的进程ID在记录数组中查找,如果找到了记录数组中有相同文件路径和进程ID的项A,则将项A作为目标tmp文件的匹配项;如果未找到匹配项,则结束;
还原步骤,还原程序将目标tmp文件的拓展名修改为目标tmp文件匹配项的拓展名,再将目标tmp文件常规名的后六位删除。
第二个方面,还提供一种office文档IO中tmp文件还原系统,具有设置在内核层的过滤驱动和用户层的还原程序,所述系统包括:
捕获IO模块,用于启动过滤驱动捕获产生的IO,并将IO数据储存到内核层的IO数据栈中;
获取第一对象信息模块,用于还原程序获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径;
创建记录数组模块,用于还原程序创建记录数组,记录数组的每个元素由文件路径、文件拓展名、执行进程ID和进程名组成;
第一判断模块,用于还原程序根据第一对象信息判断修改文件是否是锁文件,若是,则通过过滤驱动查询IO指令的执行进程,获取文件的第二对象信息,再将第一对象信息和第二对象信息存入记录数组;若否,则不做处理;其中第二对象信息包括执行IO的进程ID和进程名;
第二判断模块,用于还原程序根据第一对象信息判断修改文件是否是tmp文件,若是,则以修改文件为目标tmp文件执行查询还原模块;若否,则结束;
查询还原模块,用于还原程序通过目标tmp文件的第一、第二对象信息查询记录数组中是否有目标tmp文件的匹配项,若有,则通过匹配项的第一对象信息将目标tmp文件还原;若没有,则结束。
在其中一个实施例中,在所述获取第一对象信息模块之前,还包括:创建IO数据链表模块,用于还原程序在用户层创建IO数据链表,IO数据链表的每个节点由IO文件目录、IO写入字符数、IO位置偏移、写入数据和链表指针组成;
IO数据链表初始化模块,用于还原程序创建IO数据链表头节点,然后创建IO数据链表的空节点,并将空节点链接到头节点上;
数据映射模块,用于将IO数据栈中的数据映射到IO数据链表;
另外,所述获取第一对象信息模块,还包括:
用于还原程序从映射数据后的IO数据链表中获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径。
在其中一个实施例中,所述数据映射模块,还包括:
数据转移单元,用于还原程序沿着IO数据链表头节点查询到空节点A,并将IO数据栈中的数据映射到空节点A,获得节点B;
空间释放和新节点创建单元,用于还原程序将映射数据后的IO数据栈空间释放,再创建一个空节点C链接到节点B上。
在其中一个实施例中,所述第一判断模块,包括:
锁文件判断单元,用于还原程序根据第一对象信息中的文件名判断修改文件是否是锁文件,若是,则先通过过滤驱动查询IO指令的执行进程,获得第二信息对象,再执行匹配单元,如果不是,则结束判断;
匹配单元,用于还原程序在记录数组中查询进程ID或进程名,判断记录数组中是否存在与新增项的进程ID或进程名相同的原有项,若存在,则返回结果为匹配;若不存在,则返回结果为不匹配;
写入单元,用于还原程序根据匹配结果进行不同处理,所述不同处理包括: 如果匹配则将新增项覆盖记录数组的原有项;如果不匹配,则将新增项作为一个新项写入记录数组。
在其中一个实施例中,所述查询还原模块,包括:
查询单元,用于还原程序根据目标tmp文件的第一对象信息中的文件路径和第二对象信息中的进程ID在记录数组中查找,如果找到了记录数组中有相同文件路径和进程ID的项A,则将项A作为目标tmp文件的匹配项;如果未找到匹配项,则结束;
还原单元,用于还原程序将目标tmp文件的拓展名修改为目标tmp文件匹配项的拓展名,再将目标tmp文件常规名的后六位删除。
本发明的有益效果是:
1.本发明在过滤驱动的基础上,直接利用office文档的IO机制对office文档IO产生的tmp文件进行还原,不增加额外开销,方便高效;
2.本发明在每次IO过程后即实现office文档中tmp文件的还原,对后续的IO操作不产生影响,兼容性高,可拓展性强;
3.本发明通过过滤驱动捕获IO,创建记录数组记录锁文件信息,当检测到需要还原的tmp文件时,可以快速查询记录数组得到原文件信息并将tmp文件还原。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
图1为本发明实施例一中office文档IO中tmp文件还原方法的流程图。
图2为本发明实施例二中office文档IO中tmp文件还原方法的流程图。
图3为本发明实施例二中office文档IO中tmp文件还原方法的逻辑结构图。
图4为本发明实施例三office文档IO中tmp文件还原系统结构图。
图5为本发明实施例三中数据映射模块的结构图。
图6为本发明实施例三中第一判断模块的结构图。
图7为本发明实施例三中查询还原模块的结构图。
附图中,各标号所代表的部件列表如下:
3001、捕获IO模块,3002、创建IO数据链表模块,3003、IO数据链表初始化模块,3004、数据映射模块,3005、获取第一对象信息模块,3006、创建记录数组模块,3007、第一判断模块,3008、第二判断模块,3009、查询还原模块,30041、数据转移单元,30042、空间释放和新节点创建单元,30071、锁文件判断单元,30072、匹配单元,30073、写入单元,30091、查询单元,30092、还原单元。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供的方法,应用范围包括但不限于下述环境:操作系统为Windows10,解析过程由C++语言编写。
实施例一
如图1所示,提供一种office文档IO中tmp文件还原方法,具有设置在内核层的过滤驱动和用户层的还原程序,所述方法包括步骤:
步骤S001,启动过滤驱动捕获产生的IO,并将IO数据储存到内核层的IO数据栈中。
步骤S002,还原程序获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径。
步骤S003,还原程序创建记录数组,记录数组的每个元素由文件路径、文件拓展名、执行进程ID和进程名组成。
值得解释的是,所述文件路径、文件拓展名、执行进程ID和进程名,具体是:
文件路径,即IO请求包要写入的文件在操作系统中的位置;
文件拓展名,即位于文件名的末尾,由一个点(.)和几个字母组成,扩展名指明了文件的类型和格式,帮助操作系统确定如何打开该文件;
执行进程ID,即执行IO的进程在操作系统中的编号;
进程名,即执行IO的进程在操作系统中的名称。
步骤S004,还原程序根据第一对象信息判断修改文件是否是锁文件,若是,则通过过滤驱动查询IO指令的执行进程,获取文件的第二对象信息,再将第一对象信息和第二对象信息存入记录数组;若否,则不做处理;其中第二对象信息包括执行IO的进程ID和进程名。
值得解释的是,所述锁文件,是指在office文档打开时由于office文档的IO机制产生的一类文件;office文档的IO机制大致为:office文档每次打开时,会先创建一个原文件对应的锁文件,该锁文件由~$开头,其余文件名与原文件名一致;office文档修改时,并不是使用原文件名进行IO,而使用tmp文件进行修改,该tmp文件的命名格式为“原文件名+‘~’ + 5位随机的十六进制数”。
可选的,所述步骤S004,包括:
步骤S0041,还原程序根据第一对象信息中的文件名判断修改文件是否是锁文件,若是,则先通过过滤驱动查询IO指令的执行进程,获得第二信息对象,再执行匹配,如果不是,则结束判断;
步骤S0042,还原程序在记录数组中查询进程ID或进程名,判断记录数组中是否存在与新增项的进程ID或进程名相同的原有项,若存在,则返回结果为匹配;若不存在,则返回结果为不匹配;
步骤S0043,还原程序根据匹配结果进行不同处理,所述不同处理包括: 如果匹配则将新增项覆盖记录数组的原有项;如果不匹配,则将新增项作为一个新项写入记录数组。
值得解释的是,锁文件判断可以快速跳过不是锁文件类型的文件,提高方法的执行效率;而根据匹配结果来进行不同的写入处理,可以合理利用记录数组空间,防止记录数组空间无休止扩大。
步骤S005,还原程序根据第一对象信息判断修改文件是否是tmp文件,若是,则以修改文件为目标tmp文件执行步骤S006;若否,则结束。
步骤S006,还原程序通过目标tmp文件的第一、第二对象信息查询记录数组中是否有目标tmp文件的匹配项,若有,则通过匹配项的第一对象信息将目标tmp文件还原;若没有,则结束。
另外,为了便于理解,下面我们对步骤S006进行详细说明。
所述步骤S006,包括:
步骤S0061,还原程序根据目标tmp文件的第一对象信息中的文件路径和第二对象信息中的进程ID在记录数组中查找,如果找到了记录数组中有相同文件路径和进程ID的项A,则将项A作为目标tmp文件的匹配项;如果未找到匹配项,则结束;
步骤S0062,还原程序将目标tmp文件的拓展名修改为目标tmp文件匹配项的拓展名,再将目标tmp文件常规名的后六位删除。
值得解释的是,文件名包含文件常规名和文件拓展名,文件常规名由计算机用户指定,文件拓展名通常由操作系统指定,由于office文档IO机制,产生的tmp文件不仅文件拓展名变为了.tmp,也在文件常规名的最后添加了~和五位随机的十六进制数,所以文件常规名和文件拓展名均需要还原。
值得说明的是,本发明利用office文档IO机制进行tmp文件还原的原理为:office文档修改之前必然会先打开文件,打开文件就会创建锁文件,又由于锁文件的创建进程和执行tmp文件IO的进程是相同的,故在记录数组中查找tmp文件的第二对象信息,查到的是由同一个进程创建的锁文件,而该锁文件的类型就是tmp文件原文件的类型。
本发明在过滤驱动的基础上,直接利用office文档的IO机制,结合记录数组,能够在office文档修改IO执行后迅速对tmp文件进行还原,整体情况稳定,还原效果较好。
实施例二
如图2所示,提供一种office文档IO中tmp文件还原方法,具有设置在内核层的过滤驱动和用户层的还原程序,所述方法包括步骤:
步骤S201,启动过滤驱动捕获产生的IO,并将IO数据储存到内核层的IO数据栈中;
步骤S202,还原程序在用户层创建IO数据链表,IO数据链表的每个节点由IO文件目录、IO写入字符数、IO位置偏移、写入数据和链表指针组成;
步骤S203,还原程序创建IO数据链表头节点,然后创建IO数据链表的空节点,并将空节点链接到头节点上;
步骤S204,将IO数据栈中数据映射到初始化后的IO数据链表;
步骤S205,还原程序从映射数据后的IO数据链表中获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径;
步骤S206,还原程序创建记录数组,记录数组的每个元素由文件路径、文件拓展名、执行进程ID和进程名组成;
步骤S207,还原程序根据第一对象信息判断修改文件是否是锁文件,若是,则通过过滤驱动查询IO指令的执行进程,获取文件的第二对象信息,再将第一对象信息和第二对象信息存入记录数组;若否,则不做处理;其中第二对象信息包括执行IO的进程ID和进程名;
步骤S208,还原程序根据第一对象信息判断修改文件是否是tmp文件,若是,则以修改文件为目标tmp文件执行步骤S209;若否,则结束;
步骤S209,还原程序通过目标tmp文件的第一、第二对象信息查询记录数组中是否有目标tmp文件的匹配项,若有,则通过匹配项的第一对象信息将目标tmp文件还原;若没有,则结束。
另外,为了便于理解,下面我们对步骤S204进行详细说明。
所述步骤S204,包括:
步骤S2041,还原程序沿着IO数据链表头节点查询到空节点A,并将IO数据栈中的数据映射到空节点A,获得节点B;
步骤S2042,还原程序将映射数据后的IO数据栈空间释放,再创建一个空节点C链接到节点B上。
值得解释的是,IO数据栈在内核层,而步骤S202中创建的IO数据链表在应用层,在应用层操作数据相比在内核层直接操作,对系统的风险更小,由于操作出错导致系统崩溃的可能性明显降低。
值得解释的是,步骤S202中所述IO文件目录、IO写入字符数、IO位置偏移、写入数据,具体是:
IO文件目录,即IO请求包要写入的文件在操作系统中的位置;
IO写入字符数,即IO请求包要写入的数据长度;
IO位置偏移,即IO请求包要写入文件的起始位置;
写入数据,即IO请求包具体写入文件的数据。
为了方便理解,我们提供一个本技术方案的逻辑结构图,如图3所示,当MS office文档打开时,驱动捕获创建锁文件的IO,并将捕获的IO记录在内核驱动IO数据栈中,然后将驱动IO数据栈中的信息映射到用户层IO数据链表,还原程序查询IO数据链表并判断是锁文件后,将锁文件信息记录在记录数组中;当office文件修改时,驱动捕获修改产生的tmp文件IO,并将捕获的IO记录在内核驱动IO数据栈中,然后将IO数据栈中的信息映射到用户层IO数据链表,还原程序查询IO数据链表并判断是tmp文件后,前往记录数组查找与tmp文件匹配的信息,并根据查询结果对tmp文件进行还原处理。
本实施例与实施例一相比,在获取第一对象信息之前,将IO数据由内核层的IO数据栈映射到了用户层的IO数据链表,再从用户层的IO数据链表获取第一对象信息,避免了持续从内核获取数据,降低了内存泄露和系统崩溃的可能性。
实施例三
如图4所示,提供了一种office文档IO中tmp文件还原系统,具有设置在内核层的过滤驱动和用户层的还原程序,该系统包括:
捕获IO模块3001,用于启动过滤驱动捕获产生的IO,并将IO数据储存到内核层的IO数据栈中;
创建IO数据链表模块3002,用于还原程序在用户层创建IO数据链表,IO数据链表的每个节点由IO文件目录、IO写入字符数、IO位置偏移、写入数据和链表指针组成;
IO数据链表初始化模块3003,用于还原程序创建IO数据链表头节点,然后创建IO数据链表的空节点,并将空节点链接到头节点上;
数据映射模块3004,用于将IO数据栈中的数据映射到IO数据链表;
获取第一对象信息模块3005,用于还原程序获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径;
创建记录数组模块3006,用于还原程序创建记录数组,记录数组的每个元素由文件路径、文件拓展名、执行进程ID和进程名组成;
第一判断模块3007,用于还原程序根据第一对象信息判断修改文件是否是锁文件,若是,则通过过滤驱动查询IO指令的执行进程,获取文件的第二对象信息,再将第一对象信息和第二对象信息存入记录数组;若否,则不做处理;其中第二对象信息包括执行IO的进程ID和进程名;
第二判断模块3008,用于还原程序根据第一对象信息判断修改文件是否是tmp文件,若是,则以修改文件为目标tmp文件执行查询还原模块3009;若否,则结束;
查询还原模块3009,用于还原程序通过目标tmp文件的第一、第二对象信息查询记录数组中是否有目标tmp文件的匹配项,若有,则通过匹配项的第一对象信息将目标tmp文件还原;若没有,则结束。
可选的,如图5所示,所述数据映射模块3004,包括:
数据转移单元30041,用于还原程序沿着IO数据链表头节点查询到空节点A,并将IO数据栈中的数据映射到空节点A,获得节点B;
空间释放和新节点创建单元30042,用于还原程序将映射数据后的IO数据栈空间释放,再创建一个空节点C链接到节点B上。
可选的,如图6所示,所述第一判断模块3007,包括:
锁文件判断单元30071,用于还原程序根据第一对象信息中的文件名判断修改文件是否是锁文件,若是,则先通过过滤驱动查询IO指令的执行进程,获得第二信息对象,再执行匹配单元30072,如果不是,则结束判断;
匹配单元30072,用于还原程序在记录数组中查询进程ID或进程名,判断记录数组中是否存在与新增项的进程ID或进程名相同的原有项,若存在,则返回结果为匹配;若不存在,则返回结果为不匹配;
写入单元30073,用于还原程序根据匹配结果进行不同处理,所述不同处理包括:如果匹配则将新增项覆盖记录数组的原有项;如果不匹配,则将新增项作为一个新项写入记录数组。
可选的,如图7所示,所述查询还原模块3009,包括:
查询单元30091,用于还原程序根据目标tmp文件的第一对象信息中的文件路径和第二对象信息中的进程ID在记录数组中查找,如果找到了记录数组中有相同文件路径和进程ID的项A,则将项A作为目标tmp文件的匹配项;如果未找到匹配项,则结束;
还原单元30092,用于还原程序将目标tmp文件的拓展名修改为目标tmp文件匹配项的拓展名,再将目标tmp文件常规名的后六位删除。
本技术方案利用office文件IO机制和过滤驱动,在每次IO结束后对office文档IO中的tmp文件进行还原,不增加额外开销,简单高效,同时对后续IO操作不产生影响,兼容性高,可拓展性强。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++、Ruby、Go,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种office文档IO中tmp文件还原方法,其特征在于,具有设置在内核层的过滤驱动和用户层的还原程序,所述方法包括步骤:
捕获IO步骤,启动过滤驱动捕获产生的IO,并将IO数据储存到内核层的IO数据栈中;
获取第一对象信息步骤,还原程序获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径;
创建记录数组步骤,还原程序在用户层创建记录数组,记录数组的每个元素由文件路径、文件拓展名、执行进程ID和进程名组成;
第一判断步骤,还原程序根据第一对象信息判断修改文件是否是锁文件,若是,则通过过滤驱动查询IO指令的执行进程,获取文件的第二对象信息,再将第一对象信息和第二对象信息存入记录数组;若否,则不做处理;其中第二对象信息包括执行IO的进程ID和进程名;
第二判断步骤,还原程序根据第一对象信息判断修改文件是否是tmp文件,若是,则以修改文件为目标tmp文件执行查询还原步骤;若否,则结束;
查询还原步骤,还原程序通过目标tmp文件的第一、第二对象信息查询记录数组中是否有目标tmp文件的匹配项,若有,则通过匹配项的第一对象信息将目标tmp文件还原;若没有,则结束;
其中,所述查询还原步骤,包括:
查询步骤,还原程序根据目标tmp文件的第一对象信息中的文件路径和第二对象信息中的进程ID在记录数组中查找,如果找到了记录数组中有相同文件路径和进程ID的项A,则将项A作为目标tmp文件的匹配项;如果未找到匹配项,则结束;
还原步骤,还原程序将目标tmp文件的拓展名修改为目标tmp文件匹配项的拓展名,再将目标tmp文件常规名的后六位删除。
2.根据权利要求1所述的office文档IO中tmp文件还原方法,其特征在于,在所述获取第一对象信息步骤之前,还包括:
创建IO数据链表步骤,还原程序在用户层创建IO数据链表,IO数据链表的每个节点由IO文件目录、IO写入字符数、IO位置偏移、写入数据和链表指针组成;
IO数据链表初始化步骤,还原程序创建IO数据链表头节点,然后创建IO数据链表的空节点,并将空节点链接到头节点上;
数据映射步骤,将IO数据栈中数据映射到初始化后的IO数据链表;
另外,所述获取第一对象信息步骤,还包括:
还原程序从映射数据后的IO数据链表中获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径。
3.根据权利要求2所述的office文档IO中tmp文件还原方法,其特征在于,所述数据映射步骤,包括:
数据转移步骤,还原程序沿着IO数据链表头节点查询到空节点A,并将IO数据栈中的数据映射到空节点A,获得节点B;
空间释放和新节点创建步骤,还原程序将映射数据后的IO数据栈空间释放,再创建一个空节点C链接到节点B上。
4.根据权利要求1所述的office文档IO中tmp文件还原方法,其特征在于,所述第一判断步骤,还包括:
锁文件判断步骤,还原程序根据第一对象信息中的文件名判断修改文件是否是锁文件,若是,则先通过过滤驱动查询IO指令的执行进程,获得第二信息对象,再执行匹配步骤,如果不是,则结束判断;
匹配步骤,还原程序在记录数组中查询进程ID或进程名,判断记录数组中是否存在与新增项的进程ID或进程名相同的原有项,若存在,则返回结果为匹配;若不存在,则返回结果为不匹配;
写入步骤,还原程序根据匹配结果进行不同处理,所述不同处理包括: 如果匹配则将新增项覆盖记录数组的原有项;如果不匹配,则将新增项作为一个新项写入记录数组。
5.一种office文档IO中tmp文件还原系统,其特征在于,具有设置在内核层的过滤驱动和用户层的还原程序,所述系统包括:
捕获IO模块,用于启动过滤驱动捕获产生的IO,并将IO数据储存到内核层的IO数据栈中;
获取第一对象信息模块,用于还原程序获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径;
创建记录数组模块,用于还原程序在用户层创建记录数组,记录数组的每个元素由文件路径、文件拓展名、执行进程ID和进程名组成;
第一判断模块,用于还原程序根据第一对象信息判断修改文件是否是锁文件,若是,则通过过滤驱动查询IO指令的执行进程,获取文件的第二对象信息,再将第一对象信息和第二对象信息存入记录数组;若否,则不做处理;其中第二对象信息包括执行IO的进程ID和进程名;
第二判断模块,用于还原程序根据第一对象信息判断修改文件是否是tmp文件,若是,则以修改文件为目标tmp文件执行查询还原模块;若否,则结束;
查询还原模块,用于还原程序通过目标tmp文件的第一、第二对象信息查询记录数组中是否有目标tmp文件的匹配项,若有,则通过匹配项的第一对象信息将目标tmp文件还原;若没有,则结束;
其中,所述查询还原模块,包括:
查询单元,用于还原程序根据目标tmp文件的第一对象信息中的文件路径和第二对象信息中的进程ID在记录数组中查找,如果找到了记录数组中有相同文件路径和进程ID的项A,则将项A作为目标tmp文件的匹配项;如果未找到匹配项,则结束;
还原单元,用于还原程序将目标tmp文件的拓展名修改为目标tmp文件匹配项的拓展名,再将目标tmp文件常规名的后六位删除。
6.根据权利要求5所述的office文档IO中tmp文件还原系统,其特征在于,在所述获取第一对象信息模块之前,还包括:
创建IO数据链表模块,用于还原程序在用户层创建IO数据链表,IO数据链表的每个节点由IO文件目录、IO写入字符数、IO位置偏移、写入数据和链表指针组成;
IO数据链表初始化模块,用于还原程序创建IO数据链表头节点,然后创建IO数据链表的空节点,并将空节点链接到头节点上;
数据映射模块,用于将IO数据栈中的数据映射到IO数据链表;
另外,所述获取第一对象信息模块,还包括:
用于还原程序从映射数据后的IO数据链表中获取并解析IO数据,得到修改文件的第一对象信息,其中第一对象信息包括文件类型、文件名和文件存储路径。
7.根据权利要求6所述的office文档IO中tmp文件还原系统,其特征在于,所述数据映射模块,还包括:
数据转移单元,用于还原程序沿着IO数据链表头节点查询到空节点A,并将IO数据栈中的数据映射到空节点A,获得节点B;
空间释放和新节点创建单元,用于还原程序将映射数据后的IO数据栈空间释放,再创建一个空节点C链接到节点B上。
8.根据权利要求5所述的office文档IO中tmp文件还原系统,其特征在于,所述第一判断模块,包括:
锁文件判断单元,用于还原程序根据第一对象信息中的文件名判断修改文件是否是锁文件,若是,则先通过过滤驱动查询IO指令的执行进程,获得第二信息对象,再执行匹配单元,如果不是,则结束判断;
匹配单元,用于还原程序在记录数组中查询进程ID或进程名,判断记录数组中是否存在与新增项的进程ID或进程名相同的原有项,若存在,则返回结果为匹配;若不存在,则返回结果为不匹配;
写入单元,用于还原程序根据匹配结果进行不同处理,所述不同处理包括: 如果匹配则将新增项覆盖记录数组的原有项;如果不匹配,则将新增项作为一个新项写入记录数组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410269092.7A CN117873403B (zh) | 2024-03-11 | 2024-03-11 | office文档IO中tmp文件还原方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410269092.7A CN117873403B (zh) | 2024-03-11 | 2024-03-11 | office文档IO中tmp文件还原方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117873403A CN117873403A (zh) | 2024-04-12 |
CN117873403B true CN117873403B (zh) | 2024-06-04 |
Family
ID=90581597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410269092.7A Active CN117873403B (zh) | 2024-03-11 | 2024-03-11 | office文档IO中tmp文件还原方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117873403B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216980A (zh) * | 2014-07-24 | 2014-12-17 | 英方软件(上海)有限公司 | 一种文件系统序列化操作的分类方法 |
CN104615948A (zh) * | 2015-02-12 | 2015-05-13 | 浪潮电子信息产业股份有限公司 | 一种自动识别文件完整性与恢复的方法 |
CN108287920A (zh) * | 2018-02-13 | 2018-07-17 | 深圳市博安达信息技术股份有限公司 | 一种在BS系统下处理office文件的方法 |
CN109388538A (zh) * | 2018-09-13 | 2019-02-26 | 西安交通大学 | 一种基于内核的文件操作行为监控方法及装置 |
CN110221825A (zh) * | 2019-06-10 | 2019-09-10 | 周登祥 | 一种在计算机上实现母语编程的方法 |
CN110245037A (zh) * | 2019-06-18 | 2019-09-17 | 中国刑事警察学院 | 一种基于日志的Hive用户操作行为还原方法 |
CN114647624A (zh) * | 2022-05-11 | 2022-06-21 | 成都云祺科技有限公司 | 块级cdp中数据库一致点的捕获方法、系统、存储介质 |
CN115086304A (zh) * | 2022-07-08 | 2022-09-20 | 甘肃省气象信息与技术装备保障中心 | 一种基于ftp协议的多源分布式下载系统 |
CN115098451A (zh) * | 2022-06-14 | 2022-09-23 | 武汉众邦银行股份有限公司 | 一种基于文件的数据传输方法 |
CN115454669A (zh) * | 2022-08-31 | 2022-12-09 | 山东浪潮爱购云链信息科技有限公司 | 基于办公自动化系统的office调用方法、装置、设备及介质 |
CN117312262A (zh) * | 2023-09-08 | 2023-12-29 | 浪潮云信息技术股份公司 | 一种业务数据传输与监控管理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7814077B2 (en) * | 2007-04-03 | 2010-10-12 | International Business Machines Corporation | Restoring a source file referenced by multiple file names to a restore file |
US9659000B2 (en) * | 2014-05-01 | 2017-05-23 | International Business Machines Corporation | Mapping information into hybrid structure enabling efficient querying of the information |
WO2023154182A1 (en) * | 2022-02-09 | 2023-08-17 | harpoon Corp. | Visual cluster deployment and operation system and method |
-
2024
- 2024-03-11 CN CN202410269092.7A patent/CN117873403B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216980A (zh) * | 2014-07-24 | 2014-12-17 | 英方软件(上海)有限公司 | 一种文件系统序列化操作的分类方法 |
CN104615948A (zh) * | 2015-02-12 | 2015-05-13 | 浪潮电子信息产业股份有限公司 | 一种自动识别文件完整性与恢复的方法 |
CN108287920A (zh) * | 2018-02-13 | 2018-07-17 | 深圳市博安达信息技术股份有限公司 | 一种在BS系统下处理office文件的方法 |
CN109388538A (zh) * | 2018-09-13 | 2019-02-26 | 西安交通大学 | 一种基于内核的文件操作行为监控方法及装置 |
CN110221825A (zh) * | 2019-06-10 | 2019-09-10 | 周登祥 | 一种在计算机上实现母语编程的方法 |
CN110245037A (zh) * | 2019-06-18 | 2019-09-17 | 中国刑事警察学院 | 一种基于日志的Hive用户操作行为还原方法 |
CN114647624A (zh) * | 2022-05-11 | 2022-06-21 | 成都云祺科技有限公司 | 块级cdp中数据库一致点的捕获方法、系统、存储介质 |
CN115098451A (zh) * | 2022-06-14 | 2022-09-23 | 武汉众邦银行股份有限公司 | 一种基于文件的数据传输方法 |
CN115086304A (zh) * | 2022-07-08 | 2022-09-20 | 甘肃省气象信息与技术装备保障中心 | 一种基于ftp协议的多源分布式下载系统 |
CN115454669A (zh) * | 2022-08-31 | 2022-12-09 | 山东浪潮爱购云链信息科技有限公司 | 基于办公自动化系统的office调用方法、装置、设备及介质 |
CN117312262A (zh) * | 2023-09-08 | 2023-12-29 | 浪潮云信息技术股份公司 | 一种业务数据传输与监控管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117873403A (zh) | 2024-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3629510B2 (ja) | 拡張カード・ファイル・システム | |
CN102541968B (zh) | 一种索引方法 | |
US11221921B2 (en) | Method, electronic device and computer readable storage medium for data backup and recovery | |
CN110532347B (zh) | 一种日志数据处理方法、装置、设备和存储介质 | |
CN108062358B (zh) | innodb引擎删除记录的离线恢复方法、存储介质 | |
CN106980665B (zh) | 数据字典实现方法、装置及数据字典管理系统 | |
CN109918341B (zh) | 日志处理方法及装置 | |
WO2020103493A1 (zh) | 基于fat32文件系统的删除文件恢复方法及系统 | |
CN112115002B (zh) | 从损坏或不可信机械硬盘恢复文件的方法及装置 | |
CN110990406A (zh) | 一种模糊查询方法、装置、设备和介质 | |
CN111400101B (zh) | 一种jfs2文件系统数据删除时的数据恢复方法及系统 | |
CN111104377A (zh) | 文件管理的方法、电子设备和计算机可读存储介质 | |
ZA200107321B (en) | System and method for extracting index key data fields. | |
US7536423B2 (en) | Processing data objects | |
CN114706533A (zh) | 一种基于gpt分区表的多文件多级启动加载方法及装置 | |
US20030023584A1 (en) | Universal information base system | |
KR101670473B1 (ko) | MySQL InnoDB 데이터베이스에서 삭제된 데이터를 복원하는 방법 | |
CN117873403B (zh) | office文档IO中tmp文件还原方法及其系统 | |
CN107656868B (zh) | 一种利用线程私有数据获取线程名字的调试方法及系统 | |
CN107818136B (zh) | 用于回收垃圾对象数据的方法和装置 | |
US8005844B2 (en) | On-line organization of data sets | |
CN112380174B (zh) | 含删除文件的xfs文件系统解析方法、终端设备及存储介质 | |
CN117493282A (zh) | 一种基于文件系统的元数据管理方法及其相关设备 | |
CN105786596A (zh) | 一种从64位Windows10操作系统的内存镜像文件中获取对象信息的方法 | |
CN105243090A (zh) | 一种独占文件的获取方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |