CN102760168A - 碎片文件扫描的方法及装置 - Google Patents
碎片文件扫描的方法及装置 Download PDFInfo
- Publication number
- CN102760168A CN102760168A CN2012101943691A CN201210194369A CN102760168A CN 102760168 A CN102760168 A CN 102760168A CN 2012101943691 A CN2012101943691 A CN 2012101943691A CN 201210194369 A CN201210194369 A CN 201210194369A CN 102760168 A CN102760168 A CN 102760168A
- Authority
- CN
- China
- Prior art keywords
- file
- disk
- changes
- change
- scans
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种碎片文件扫描的方法及装置,属于碎片文件扫描技术领域。所述方法包括:获取磁盘上变更的文件,获取所述变更的文件的存储位置信息;根据所述存储位置信息确定所述变更的文件是否为碎片文件;当所述变更的文件为碎片文件时,输出所述碎片文件的文件碎片信息。不需要获取磁盘上的每个文件的存储位置信息,降低了因获取文件的存储位置信息的时间开销,从而提高扫描速度。
Description
技术领域
本发明涉及碎片文件扫描技术领域,特别涉及一种碎片文件扫描的方法及装置。
背景技术
碎片文件是指在磁盘上未连续存储的文件,但碎片文件过多会使设备系统在读文件的时候来回寻找,引起系统读文件的性能下降。现有技术中定期对碎片文件进行扫描,以整理碎片文件,提高系统度文件的性能。具体实现方式为:通过调用系统接口遍历磁盘分卷上的文件,然后查询每个文件在磁盘分卷上的存储情况,根据每个文件在磁盘分卷上的存储情况判断文件内容是连续分布在磁盘分卷上的还是分散存放在磁盘分卷上的。若检测到分散存放在磁盘分卷上的文件,则将其保存到指定内存中。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:现有技术在进行碎片文件扫描时,将会查询每一个文件在磁盘分卷上的存储情况,而查询每一个文件在磁盘分卷上的存储情况将回来带来较大的时间开销,降低扫描效率。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种碎片文件扫描的方法及装置。所述技术方案如下:
一方面,本发明实施例提供了一种碎片文件扫描的方法,所述方法包括:
获取磁盘上变更的文件,所述变更的文件包括:上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件或/和磁盘上新增存储的文件;
获取所述变更的文件的存储位置信息;
根据所述存储位置信息确定所述变更的文件是否为碎片文件;
当所述变更的文件为碎片文件时,输出所述碎片文件的文件碎片信息,所述文件碎片信息至少包括文件碎片的名称及存储位置信息。
所述获取磁盘上变更的文件,包括:
根据存储的缓存信息表获取磁盘上变更的文件,所述缓存信息表记录有上次扫描结束时,磁盘上已存储文件的文件名、最后写入时间戳及扫描结果;或者
通过变更监控接口获取磁盘上变更的文件;或者
通过应用程序编程接口API钩子HooK技术获取磁盘上变更的文件。
所述根据存储的缓存信息表获取磁盘上变更的文件,包括:
对磁盘进行扫描,确定当前扫描到的文件是否存在于所述缓存信息表内;
如果所述当前扫描到的文件不存在与所述缓存信息表内,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上新增存储的文件;
如果所述当前扫描到的文件存在于所述缓存信息表内,则确定所述当前扫描到的文件的最后写入时间戳是否大于所述缓存信息表内存储的所述当前扫描到的文件的最后写入时间戳;
如果确定结果是大于,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件。
所述通过变更监控接口获取磁盘上变更的文件,包括:
上次扫描结束时,启动变更监控接口;
通过所述变更监控接口监控磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;
本次扫描开始时,从缓存中读取磁盘上变更的文件。
所述通过应用程序编程接口API钩子HooK技术获取磁盘上变更的文件,包括:
通过预先注入的检测代码检测上次扫描结束后磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;
本次扫描开始时,从缓存中读取磁盘上变更的文件。
另一方面,本发明实施例提供了一种碎片文件扫描的装置,所述装置包括:第一获取模块、第二获取模块、碎片分析模块及扫描输出模块;
所述第一获取模块,用于获取磁盘上变更的文件,所述变更的文件包括:上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件或/和磁盘上新增存储的文件;
所述第二获取模块,用于获取所述变更的文件的存储位置信息;
所述碎片分析模块,用于根据所述存储位置信息确定所述变更的文件是否为碎片文件;
所述扫描输出模块,用于当所述变更的文件为碎片文件时,输出所述碎片文件的文件碎片信息,所述文件碎片信息至少包括文件碎片的名称及存储位置信息。
所述第一获取模块包括:
第一获取单元,用于根据存储的缓存信息表获取磁盘上变更的文件,所述缓存信息表记录有上次扫描结束时,磁盘上已存储文件的文件名、最后写入时间戳及扫描结果;或者
第二获取单元,用于通过变更监控接口获取磁盘上变更的文件;或者
第三获取单元,用于通过应用程序编程接口API钩子HooK技术获取磁盘上变更的文件。
所述第一获取单元包括:
第一确定子单元,用于对磁盘进行扫描,确定当前扫描到的文件是否存在于所述缓存信息表内;
第一判定子单元,用于如果所述当前扫描到的文件不存在与所述缓存信息表内,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上新增存储的文件;
第二确定子单元,用于如果所述当前扫描到的文件存在于所述缓存信息表内,则确定所述当前扫描到的文件的最后写入时间戳是否大于所述缓存信息表内存储的所述当前扫描到的文件的最后写入时间戳;
第二判定子单元,用于如果确定结果是大于,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件。
所述第二获取单元包括:
控制子单元,用于上次扫描结束时,启动变更监控接口;
监控子单元,用于通过所述变更监控接口监控磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;
读取子单元,用于本次扫描开始时,从缓存中读取磁盘上变更的文件。
所述第三获取单元包括:
监控子单元,用于通过预先注入的检测代码检测上次扫描结束后磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;
读取子单元,用于本次扫描开始时,从缓存中读取磁盘上变更的文件。
本发明实施例提供的技术方案带来的有益效果是:在进行碎片文件扫描时,通过缓存信息表筛选出磁盘上变更的文件,之后,获取所述变更的文件的存储位置信息,并根据所述存储位置信息确定所述变更的文件是否为碎片文件,不需要获取磁盘上的每个文件的存储位置信息,降低了因获取文件的存储位置信息的时间开销,从而提高扫描速度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种碎片文件扫描的方法流程示意图;
图2,为本发明实施例二所提供的一种文件存储的示例图;
图3是本发明实施例二提供的一种碎片文件扫描的方法流程示意图;
图4是本发明实施例二提供的一种碎片文件扫描的方法流程示意图;
图5是本发明实施例三提供的一种碎片文件扫描的装置结构示意图;
图6是本发明实施例三提供的一种碎片文件扫描的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
参见图1,一种碎片文件扫描的方法,所述方法包括:
步骤101:获取磁盘上变更的文件,所述变更的文件包括:上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件或/和磁盘上新增存储的文件;
步骤102:获取所述变更的文件的存储位置信息;
步骤103:根据所述存储位置信息确定所述变更的文件是否为碎片文件;
步骤104:当所述变更的文件为碎片文件时,输出所述碎片文件的文件碎片信息,所述文件碎片信息至少包括文件碎片的名称及存储位置信息。
本发明实施例提供的技术方案带来的有益效果是:在进行碎片文件扫描时,通过缓存信息表筛选出磁盘上变更的文件,之后,获取所述变更的文件的存储位置信息,并根据所述存储位置信息确定所述变更的文件是否为碎片文件,不需要获取磁盘上的每个文件的存储位置信息,降低了因获取文件的存储位置信息的时间开销,从而提高扫描速度。
实施例二
通常情况下,将磁盘划分为若干个分卷来进行管理,如通常所说的C盘就是一个磁盘分卷,这样,用户便可以在不同的磁盘分卷上分别进行文件存储管理。
簇是文件存储管理的最小单位,这里,可以将磁盘分卷划分为若干个物理簇,并将划分磁盘分卷得到的若干个物理簇按顺序编号,该编号可以称为LCN(Logical Cluster Number,物理簇号),这样,划分磁盘分卷得到的物理簇便可以由LCN来标识。这里,还可以将文件划分为若干个簇进行管理,并将划分文件得到的若干个文件簇按顺序进行编号,该编号称为VCN(Virtual Cluster Number,虚拟簇号),这样,划分文件得到的文件簇便可以由VCN来标识。
那么,在进行文件存储管理时,便可以将文件按划分得到的文件簇保存在连续或者离散的若干个物理簇中,且由VCN来辨别划分文件得到的文件簇的排列顺序和连续性。本发明实施例将没有存储在连续物理簇的文件称之为碎片文件,而文件内不连续存储的文件簇称为文件碎片。
参见图2,为本发明实施例所提供的一种文件存储的示例图,图中的每一格代表磁盘分卷上的一个物理簇,其中,带有字母部分的物理簇表示被文件簇占用,且同字母的物理簇表示被属于同一文件的文件簇占用。由图2可以知道,文件C在该磁盘分卷上存储在连续的物理簇内,故该文件C不存在碎片,而文件A和B存储在该磁盘分卷上离散的若干个物理簇内,故,文件A和B为碎片文件。
本发明实施例中,需要定期对磁盘进行扫描,获取磁盘上所存储的碎片文件信息,以对碎片文件进行整理,提高磁盘的读写速度。
本发明实施例中,从上次扫描结束至本次扫描开始期间,磁盘上已存储的内容未有变更的文件在磁盘上的存储位置与上次扫描时相比并不会发生变化,故本次扫描时,该类内容未有变更的文件就可以不必再进行扫描,可以由缓存的上次的扫描结果来获知该类内容未有变更的文件是否为碎片文件。而从上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件在磁盘上的存储位置与上次扫描时相比会发生变化,可能会是碎片文件,另外,从上次扫描结束至本次扫描开始期间磁盘上新增的文件,由于上次未作扫描,也可能是碎片文件,故本次进行碎片文件扫描时,可以仅对自上次进行碎片文件扫描后磁盘上已存储的内容有变更的文件及磁盘上新增文件进行扫描,可以很大程度上提高碎片文件的扫描速度。
基于此,本技术方案在具体实现时可以是:在进行碎片文件扫描时,获取磁盘上变更的文件,所述变更的文件包括:上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件或/和磁盘上新增存储的文件,之后,获取所述变更的文件的存储位置信息,并根据所获取的存储位置信息来确定变更的文件是否为碎片文件,当所述变更的文件为碎片文件时,输出所述碎片文件的文件碎片信息。
本发明实施例可以通过缓存机制来获取磁盘上变更的文件,作为一个可选实现的实施例,本实施例可以根据存储的缓存信息表来快速的获取磁盘上变更的文件。具体地,建立缓存信息表,该缓存信息表记录了上次进行碎片文件扫描结束时,磁盘上所存储文件的文件名、最后写入时间戳及扫描结果,之后,在每次进行碎片文件扫描结束时,根据当前扫描到的文件的最后写入时间来更新所述缓存信息表。
这样,在当前进行碎片文件扫描时,便可以根据该缓存信息表获知磁盘上变更的文件。具体地,对磁盘进行扫描,确定当前扫描到的文件是否存在于所述缓存信息表内;如果所述当前扫描到的文件不存在与所述缓存信息表内,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上新增存储的文件;如果所述当前扫描到的文件存在于所述缓存信息表内,则确定所述当前扫描到的文件的最后写入时间戳是否大于所述缓存信息表内存储的所述当前扫描到的文件的最后写入时间戳;如果确定结果是大于,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件。
假设,上次进行碎片文件扫描时得到的文件1的最后写入时间戳的值为LastWriteTimeprevious,当前进行碎片文件扫描时得到的文件1最后写入时间为LastWriteTimecurrent,那么,当条件LastWriteTimeprevious<LastWriteTimecurrent成立时,则认为文件1的内容有变更,而这意味着文件1在磁盘分卷上的存储情况发生了变化,文件1有产生文件碎片的可能。记录下内容有变更的文件1,并将缓存信息表中的文件1的最后时间时间戳由LastWriteTimeprevious更新为LastWriteTimecurrent,以待下一次筛选使用。之后,会对文件1进行分析一确定文件1是否是碎片文件。
例如,上次进行碎片文件扫描时得到的文件1的最后写入时间戳的值为2012-6-5,而当前进行碎片文件扫描时得到的文件1最后写入时间为2012-6-12,则当前扫描到的文件1对比与上一次扫描时,内容有所变更,文件1在磁盘分卷上的存储情况极有可能发生变化。
下面,结合具体实例来详细说明基于上述缓存信息表而实现的一种碎片文件扫描的方法,参见图3,所述方法具体可以包括如下操作:
步骤201:对磁盘进行扫描,具体地,通过调用第一系统接口获取磁盘所存储文件的基本信息,其中,文件的基本信息可以包括文件名、文件的文件簇信息(如文件簇对应的VCN信息)及文件的最后写入时间等;
其中,第一系统接口具体可以包括但不限于系统接口GetFileAttributesEx、GetFileInformationByHandle、GetFileTime及NtQueryInformationFile。
步骤202:确定当前扫描到的文件是否存在于缓存信息表内,具体地,查询缓存信息表,确定缓存信息表内是否记录有当前扫描到的文件的文件名,当缓存信息表内未记录当前扫描的文件的文件名,则当前扫描到的文件未存在于缓存信息表内,否则,当前扫描到的文件存在于缓存信息表内;
如果当前扫描到的文件未存在于缓存信息表内,则判定当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上新增存储的文件,需要分析当前扫描到的文件是否是碎片文件,执行步骤203;
如果当前扫描到的文件存在于缓存信息表内,执行步骤206;
步骤203:通过调用第二系统接口来获取当前扫描到的文件在磁盘分卷上的存储位置信息,所述存储位置信息可以包括:文件的文件簇与存储文件簇的物理簇的LCN间对应关系;
具体实现时,可以调用系统接口DeviceIoControl,并传入第一控制码FSCTL_GET_RETRIEVAL_POINTERS来获取当前扫描到的文件的存储位置信息;
这里,对于NTFS(New Technology File System)的文件系统,还可以调用DeviceIoControl接口,并传入第二控制码FSCTL_GET_NTFS_FILE_RECORD来获取当前扫描到的文件对应的记录信息,然后通过解析这个记录信息来获取当前扫描到的文件的存储位置信息;
其中,NTFS具体可以是指Windows NT操作环境和Windows NT高级服务器网络操作系统环境的文件系统。
步骤204:根据文件的存储位置信息来确定当前扫描到的文件是否是碎片文件;
具体地,当步骤203获取的存储文件簇的物理簇的LCN连续时,则判定当前扫描到的文件不存在碎片,不为碎片文件;当步骤203获取的存储文件簇的物理簇的LCN不连续时,则判定当前扫描到的文件存在碎片,为碎片文件;
步骤205:将当前扫描到的文件的文件名、最后写入时间及扫描结果(是否是碎片文件)添加到缓存信息表,以便下次进行磁盘扫描时,可以根据该更新后的缓存信息表来获取磁盘上变更的文件,之后,执行步骤210;
步骤206:确定当前扫描到的文件的最后写入时间是否大于缓存信息表所记录的所述文件对应的最后写入时间,
如果确定结果是不大于,则说明当前扫描到的文件为上次扫描后,磁盘上已存储的内容未有变更的文件,可以根据缓存信息表所记录的所述文件的扫描结果确定所述文件是否是碎片文件,之后,执行步骤210;
如果确定结果是大于,则判定当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件,执行步骤207;
步骤207:通过调用第二系统接口来获取当前扫描到的文件在磁盘分卷上的存储位置信息,所述存储位置信息可以包括:文件的文件簇与存储文件簇的物理簇的LCN间对应关系;
有关步骤207的详细描述请参见步骤203的描述,此处就不再赘述。
步骤208:根据文件的存储位置信息来确定当前扫描到的文件是否是碎片文件;
具体地,当步骤207获取的存储文件簇的物理簇的LCN连续时,则判定当前扫描到的文件不存在碎片,不为碎片文件;当步骤207获取的存储文件簇的物理簇的LCN不连续时,则判定当前扫描到的文件存在碎片,为碎片文件;
步骤209:根据当前扫描到的文件的文件名、最后写入时间及扫描结果(是否是碎片文件)更新缓存信息表内所述文件的记录;
步骤210:遍历磁盘是否结束,
如果结束,结束本次扫描,并输出扫描得到的碎片文件的文件碎片信息,所述文件碎片信息至少包括文件碎片的名称及存储位置信息。
如果未结束,返回执行步骤201。
进一步地,本发明实施例在结束本次扫描后,可以对扫描得到的碎片文件进行整理,如将扫描得到的碎片文件存储到指定的一段连续的内存中。
本发明实施例所带来的有益效果为:在进行碎片文件扫描时,通过缓存信息表筛选出磁盘上变更的文件,之后,获取所述变更的文件的存储位置信息,并根据所述存储位置信息确定所述变更的文件是否为碎片文件,不需要获取磁盘上的每个文件的存储位置信息,降低了因获取文件的存储位置信息的时间开销,从而提高扫描速度。
作为另一可选实现的实施例,本实施例可以通过变更监控接口获取磁盘上变更的文件。具体地,上次扫描结束时,启动变更监控接口;通过变更监控接口监控磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;本次扫描开始时,从缓存中读取磁盘上变更的文件。这里,变更监控接口具体可以包括但不限于ReadDirectoryChanges接口。
下面,结合具体实例来详细说明基于上述变更监控接口而实现的一种碎片文件扫描的方法,参见图4,所述方法具体可以包括如下操作:
步骤301:对磁盘进行扫描之前,检测缓存内是否记录有变更的文件,
如果缓存内未记录有变更的文件,判断本次是第一次进行磁盘扫描,则通过调用第一系统接口获取磁盘所存储文件的基本信息,并通过调用第二系统接口来获取磁盘所存储文件的存储位置信息,之后,根据文件的存储位置信息来确定文件是否是碎片文件,且扫描结束后输出碎片文件的文件碎片信息,并启动变更监控接口,如ReadDirectoryChanges对磁盘上变更的文件进行监控;
如果缓存内记录有变更的文件,执行步骤302;
其中,第一系统接口具体可以包括但不限于系统接口GetFileAttributesEx、GetFileInformationByHandle、GetFileTime及NtQueryInformationFile,第二系统接口具体包括但不限于DeviceIoControl。
其中,通过调用第二系统接口来获取磁盘所存储文件的存储位置信息可以包括:
调用系统接口DeviceIoControl,并传入第一控制码FSCTL_GET_RETRIEVAL_POINTERS去获取文件的存储位置信息;
这里,对于NTFS(New Technology File System)的文件系统,还可以调用DeviceIoControl接口,并传入第二控制码FSCTL_GET_NTFS_FILE_RECORD获取文件对应的记录信息,然后通过解析这个记录信息来获取文件的存储位置信息;
其中,NTFS具体可以是指Windows NT操作环境和Windows NT高级服务器网络操作系统环境的文件系统。
步骤302:从缓存中读取磁盘上变更的文件,并同时关闭变更监控接口,如ReadDirectoryChanges,停止对磁盘上变更文件的监控;
步骤303:依次获取变更的文件的存储位置信息,具体地,可以通过调用第二系统接口来获取变更的文件的存储位置信息,所述存储位置信息可以包括:文件的文件簇与存储文件簇的物理簇的LCN间对应关系;
具体实现时,可以调用系统接口DeviceIoControl,并传入第一控制码FSCTL_GET_RETRIEVAL_POINTERS去获取变更的文件的存储位置信息;
这里,对于NTFS(New Technology File System)的文件系统,还可以调用DeviceIoControl接口,并传入第二控制码FSCTL_GET_NTFS_FILE_RECORD获取变更的文件对应的记录信息,然后通过解析这个记录信息来获取变更的文件的存储位置信息;
其中,NTFS具体可以是指WindowsNT操作环境和Windows NT高级服务器网络操作系统环境的文件系统。
步骤304:根据变更的文件的存储位置信息确定所述变更的文件是否为碎片文件;
具体地,当步骤303获取的存储文件簇的物理簇的LCN连续时,则判定当前扫描到的文件不存在碎片,不为碎片文件;当步骤303获取的存储文件簇的物理簇的LCN不连续时,则判定当前扫描到的文件存在碎片,为碎片文件;
步骤305:当所述变更的文件为碎片文件时,输出所述碎片文件的文件碎片信息,所述文件碎片信息至少包括文件碎片的名称及存储位置信息;
步骤306:清空缓存,重新启动变更缄口接口,如ReadDirectoryChanges,监控磁盘上变更的文件;
本发明实施例中,文件的存储位置信息可以包括:文件的文件簇与存储文件簇的物理簇的LCN间对应关系,则本实施例中根据文件的存储位置信息来确定文件是否是碎片文件为:当存储文件簇的物理簇的LCN连续时,则判定文件不存在碎片,不为碎片文件;当存储文件簇的物理簇的LCN不连续时,则判定文件存在碎片,为碎片文件。
作为再一可选实现的实施例,本实施例可以通过应用程序编程接口API钩子HooK技术获取磁盘上变更的文件。具体地,通过预先注入的检测代码检测上次扫描结束后磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;本次扫描开始时,从缓存中读取磁盘上变更的文件,之后,获取所述变更的文件的存储位置信息,并根据所述存储位置信息确定所述变更的文件是否为碎片文件。当所述变更的文件为碎片文件时,输出所述碎片文件的文件碎片信息。而基于API HooK技术实现碎片文件扫描的具体实现方式与基于变更监控接口实现的碎片文件扫描的方法类似,此处就不再赘述。
本发明实施例所带来的有益效果为:在进行碎片文件扫描时,通过缓存信息表筛选出磁盘上变更的文件,之后,获取所述变更的文件的存储位置信息,并根据所述存储位置信息确定所述变更的文件是否为碎片文件,不需要获取磁盘上的每个文件的存储位置信息,降低了因获取文件的存储位置信息的时间开销,从而提高扫描速度。另外,在扫描开始时,跳过磁盘遍历过程,可以直接从缓存中获取磁盘上变更的文件,进一步地节省了碎片文件扫描的时间,提高扫描效率。
实施例三
参见图5,一种碎片文件扫描的装置,所述装置包括:第一获取模块401、第二获取模块402、碎片分析模块403及扫描输出模块404;
第一获取模块401,用于获取磁盘上变更的文件,所述变更的文件包括:上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件或/和磁盘上新增存储的文件;
第二获取模块402,用于获取所述变更的文件的存储位置信息;
碎片分析模块403,用于根据所述存储位置信息确定所述变更的文件是否为碎片文件;
扫描输出模块404,用于当所述变更的文件为碎片文件时,输出所述碎片文件的文件碎片信息。
进一步地,参见图6,本发明实施例如图5所示的第一获取模块401包括:
第一获取单元4011,用于根据存储的缓存信息表获取磁盘上变更的文件,所述缓存信息表记录有上次扫描结束时,磁盘上已存储文件的文件名、最后写入时间戳及扫描结果;或者
第二获取单元4012,用于通过变更监控接口获取磁盘上变更的文件;或者
第三获取单元4013,用于通过应用程序编程接口API钩子HooK技术获取磁盘上变更的文件。
具体地,第一获取单元4011包括:
第一确定子单元,用于对磁盘进行扫描,确定当前扫描到的文件是否存在于所述缓存信息表内;
第一判定子单元,用于如果所述当前扫描到的文件不存在与所述缓存信息表内,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上新增存储的文件;
第二确定子单元,用于如果所述当前扫描到的文件存在于所述缓存信息表内,则确定所述当前扫描到的文件的最后写入时间戳是否大于所述缓存信息表内存储的所述当前扫描到的文件的最后写入时间戳;
第二判定子单元,用于如果确定结果是大于,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件。
第二获取单元4012包括:
控制子单元,用于上次扫描结束时,启动变更监控接口;
监控子单元,用于通过变更监控接口监控磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;
读取子单元,用于本次扫描开始时,从缓存中读取磁盘上变更的文件。
第三获取单元4013包括:
监控子单元,用于通过预先注入的检测代码检测上次扫描结束后磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;
读取子单元,用于本次扫描开始时,从缓存中读取磁盘上变更的文件。
本发明实施例所带来的有益效果为:在进行碎片文件扫描时,通过缓存信息表筛选出磁盘上变更的文件,之后,获取所述变更的文件的存储位置信息,并根据所述存储位置信息确定所述变更的文件是否为碎片文件,不需要获取磁盘上的每个文件的存储位置信息,降低了因获取文件的存储位置信息的时间开销,从而提高扫描速度。
需要说明的是:上述实施例提供的碎片文件扫描的装置在进行碎片文件扫描时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的碎片文件扫描的装置与碎片文件扫描的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种碎片文件扫描的方法,其特征在于,所述方法包括:
获取磁盘上变更的文件,所述变更的文件包括:上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件或/和磁盘上新增存储的文件;
获取所述变更的文件的存储位置信息;
根据所述存储位置信息确定所述变更的文件是否为碎片文件;
当所述变更的文件为碎片文件时,输出所述碎片文件的文件碎片信息,所述文件碎片信息至少包括文件碎片的名称及存储位置信息。
2.根据权利要求1所述的方法,其特征在于,所述获取磁盘上变更的文件,包括:
根据存储的缓存信息表获取磁盘上变更的文件,所述缓存信息表记录有上次扫描结束时,磁盘上已存储文件的文件名、最后写入时间戳及扫描结果;或者
通过变更监控接口获取磁盘上变更的文件;或者
通过应用程序编程接口API钩子HooK技术获取磁盘上变更的文件。
3.根据权利要求2所述的方法,其特征在于,所述根据存储的缓存信息表获取磁盘上变更的文件,包括:
对磁盘进行扫描,确定当前扫描到的文件是否存在于所述缓存信息表内;
如果所述当前扫描到的文件不存在与所述缓存信息表内,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上新增存储的文件;
如果所述当前扫描到的文件存在于所述缓存信息表内,则确定所述当前扫描到的文件的最后写入时间戳是否大于所述缓存信息表内存储的所述当前扫描到的文件的最后写入时间戳;
如果确定结果是大于,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件。
4.根据权利要求2所述的方法,其特征在于,所述通过变更监控接口获取磁盘上变更的文件,包括:
上次扫描结束时,启动变更监控接口;
通过所述变更监控接口监控磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;
本次扫描开始时,从缓存中读取磁盘上变更的文件。
5.根据权利要求2所述的方法,其特征在于,所述通过应用程序编程接口API钩子HooK技术获取磁盘上变更的文件,包括:
通过预先注入的检测代码检测上次扫描结束后磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;
本次扫描开始时,从缓存中读取磁盘上变更的文件。
6.一种碎片文件扫描的装置,其特征在于,所述装置包括:第一获取模块、第二获取模块、碎片分析模块及扫描输出模块;
所述第一获取模块,用于获取磁盘上变更的文件,所述变更的文件包括:上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件或/和磁盘上新增存储的文件;
所述第二获取模块,用于获取所述变更的文件的存储位置信息;
所述碎片分析模块,用于根据所述存储位置信息确定所述变更的文件是否为碎片文件;
所述扫描输出模块,用于当所述变更的文件为碎片文件时,输出所述碎片文件的文件碎片信息,所述文件碎片信息至少包括文件碎片的名称及存储位置信息。
7.根据权利要求6所述的装置,其特征在于,所述第一获取模块包括:
第一获取单元,用于根据存储的缓存信息表获取磁盘上变更的文件,所述缓存信息表记录有上次扫描结束时,磁盘上已存储文件的文件名、最后写入时间戳及扫描结果;或者
第二获取单元,用于通过变更监控接口获取磁盘上变更的文件;或者
第三获取单元,用于通过应用程序编程接口API钩子HooK技术获取磁盘上变更的文件。
8.根据权利要求7所述的装置,其特征在于,所述第一获取单元包括:
第一确定子单元,用于对磁盘进行扫描,确定当前扫描到的文件是否存在于所述缓存信息表内;
第一判定子单元,用于如果所述当前扫描到的文件不存在与所述缓存信息表内,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上新增存储的文件;
第二确定子单元,用于如果所述当前扫描到的文件存在于所述缓存信息表内,则确定所述当前扫描到的文件的最后写入时间戳是否大于所述缓存信息表内存储的所述当前扫描到的文件的最后写入时间戳;
第二判定子单元,用于如果确定结果是大于,则判定所述当前扫描到的文件为上次扫描结束至本次扫描开始期间,磁盘上已存储的内容有变更的文件。
9.根据权利要求7所述的装置,其特征在于,所述第二获取单元包括:
控制子单元,用于上次扫描结束时,启动变更监控接口;
监控子单元,用于通过所述变更监控接口监控磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;
读取子单元,用于本次扫描开始时,从缓存中读取磁盘上变更的文件。
10.根据权利要求7所述的装置,其特征在于,所述第三获取单元包括:
监控子单元,用于通过预先注入的检测代码检测上次扫描结束后磁盘上变更的文件,并将监控到的磁盘上变更的文件记录到缓存中;
读取子单元,用于本次扫描开始时,从缓存中读取磁盘上变更的文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210194369.1A CN102760168B (zh) | 2012-06-13 | 2012-06-13 | 碎片文件扫描的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210194369.1A CN102760168B (zh) | 2012-06-13 | 2012-06-13 | 碎片文件扫描的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102760168A true CN102760168A (zh) | 2012-10-31 |
CN102760168B CN102760168B (zh) | 2015-01-07 |
Family
ID=47054625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210194369.1A Active CN102760168B (zh) | 2012-06-13 | 2012-06-13 | 碎片文件扫描的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102760168B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035723A (zh) * | 2013-03-06 | 2014-09-10 | 腾讯科技(深圳)有限公司 | 一种整理存储文件的方法和终端设备 |
CN104317952A (zh) * | 2014-11-13 | 2015-01-28 | 北京奇虎科技有限公司 | 移动终端中存储空间的扫描方法和装置 |
CN104699513A (zh) * | 2015-03-31 | 2015-06-10 | 联想(北京)有限公司 | 一种文件处理方法及装置 |
WO2018032743A1 (zh) * | 2016-08-19 | 2018-02-22 | 华为技术有限公司 | 一种文件碎片评估方法及终端 |
CN114327296A (zh) * | 2021-12-31 | 2022-04-12 | 珠海豹好玩科技有限公司 | 一种智能的磁盘碎片分析方法、装置及电子设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1542611A (zh) * | 2003-04-30 | 2004-11-03 | 联想(北京)有限公司 | 一种实现对文件变化区域监视的方法 |
US20060037079A1 (en) * | 2004-08-13 | 2006-02-16 | International Business Machines Corporation | System, method and program for scanning for viruses |
US20070198614A1 (en) * | 2006-02-14 | 2007-08-23 | Exavio, Inc | Disk drive storage defragmentation system |
US20080104147A1 (en) * | 2006-10-31 | 2008-05-01 | Rebit, Inc. | System for automatically shadowing data and file directory structures that are recorded on a computer memory |
US7451168B1 (en) * | 2003-06-30 | 2008-11-11 | Data Domain, Inc. | Incremental garbage collection of data in a secondary storage |
CN101404028A (zh) * | 2008-11-07 | 2009-04-08 | 宇龙计算机通信科技(深圳)有限公司 | 一种整理文件碎片的方法和系统 |
US20090094299A1 (en) * | 2007-10-08 | 2009-04-09 | Samsung Electronics Co., Ltd. | Apparatus and method for defragmenting files on a hydrid hard disk |
CN101571825A (zh) * | 2008-04-29 | 2009-11-04 | 联想(北京)有限公司 | 一种保存和扫描磁盘修改记录的方法和装置 |
CN101576890A (zh) * | 2008-05-08 | 2009-11-11 | 深圳市朗科科技股份有限公司 | 一种新型碎片整理方法和系统 |
CN101661486A (zh) * | 2008-08-28 | 2010-03-03 | 国际商业机器公司 | 对包含虚拟机的宿主机硬盘进行碎片整理的方法和系统 |
CN102194010A (zh) * | 2011-06-16 | 2011-09-21 | 华中科技大学 | 虚拟文件系统碎片的零拷贝整理方法 |
-
2012
- 2012-06-13 CN CN201210194369.1A patent/CN102760168B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1542611A (zh) * | 2003-04-30 | 2004-11-03 | 联想(北京)有限公司 | 一种实现对文件变化区域监视的方法 |
US7451168B1 (en) * | 2003-06-30 | 2008-11-11 | Data Domain, Inc. | Incremental garbage collection of data in a secondary storage |
US20060037079A1 (en) * | 2004-08-13 | 2006-02-16 | International Business Machines Corporation | System, method and program for scanning for viruses |
US20070198614A1 (en) * | 2006-02-14 | 2007-08-23 | Exavio, Inc | Disk drive storage defragmentation system |
US20080104147A1 (en) * | 2006-10-31 | 2008-05-01 | Rebit, Inc. | System for automatically shadowing data and file directory structures that are recorded on a computer memory |
US20090094299A1 (en) * | 2007-10-08 | 2009-04-09 | Samsung Electronics Co., Ltd. | Apparatus and method for defragmenting files on a hydrid hard disk |
CN101571825A (zh) * | 2008-04-29 | 2009-11-04 | 联想(北京)有限公司 | 一种保存和扫描磁盘修改记录的方法和装置 |
CN101576890A (zh) * | 2008-05-08 | 2009-11-11 | 深圳市朗科科技股份有限公司 | 一种新型碎片整理方法和系统 |
CN101661486A (zh) * | 2008-08-28 | 2010-03-03 | 国际商业机器公司 | 对包含虚拟机的宿主机硬盘进行碎片整理的方法和系统 |
CN101404028A (zh) * | 2008-11-07 | 2009-04-08 | 宇龙计算机通信科技(深圳)有限公司 | 一种整理文件碎片的方法和系统 |
CN102194010A (zh) * | 2011-06-16 | 2011-09-21 | 华中科技大学 | 虚拟文件系统碎片的零拷贝整理方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035723A (zh) * | 2013-03-06 | 2014-09-10 | 腾讯科技(深圳)有限公司 | 一种整理存储文件的方法和终端设备 |
CN104035723B (zh) * | 2013-03-06 | 2018-05-22 | 腾讯科技(深圳)有限公司 | 一种整理存储文件的方法和终端设备 |
CN104317952A (zh) * | 2014-11-13 | 2015-01-28 | 北京奇虎科技有限公司 | 移动终端中存储空间的扫描方法和装置 |
CN104317952B (zh) * | 2014-11-13 | 2017-10-13 | 北京奇虎科技有限公司 | 移动终端中存储空间的扫描方法和装置 |
CN104699513A (zh) * | 2015-03-31 | 2015-06-10 | 联想(北京)有限公司 | 一种文件处理方法及装置 |
CN104699513B (zh) * | 2015-03-31 | 2018-11-09 | 联想(北京)有限公司 | 一种文件处理方法及装置 |
WO2018032743A1 (zh) * | 2016-08-19 | 2018-02-22 | 华为技术有限公司 | 一种文件碎片评估方法及终端 |
CN107766370A (zh) * | 2016-08-19 | 2018-03-06 | 华为技术有限公司 | 一种文件碎片评估方法及终端 |
CN114327296A (zh) * | 2021-12-31 | 2022-04-12 | 珠海豹好玩科技有限公司 | 一种智能的磁盘碎片分析方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102760168B (zh) | 2015-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102760168A (zh) | 碎片文件扫描的方法及装置 | |
CN110764706B (zh) | 存储系统、数据管理方法及存储介质 | |
CN106326292B (zh) | 数据结构和文件聚合、读取方法及装置 | |
CN102654872A (zh) | 一种清理应用程序产生的垃圾文件的方法及装置 | |
WO2011159322A1 (en) | Data deduplication | |
CN104202375A (zh) | 同步数据的方法及系统 | |
CN103092664A (zh) | 一种安卓系统的数据文件的处理方法和装置 | |
CN102799514A (zh) | 一种日志记录管理方法和系统 | |
CN103631940A (zh) | 一种应用于hbase数据库的数据写入方法及系统 | |
CN111782134A (zh) | 数据处理方法、装置、系统和计算机可读存储介质 | |
CN110019239B (zh) | 上报数据的存储方法、装置、电子设备和存储介质 | |
US6275783B1 (en) | Logging technique for transmission system | |
CN109240607B (zh) | 一种文件读取方法和装置 | |
CN107704203A (zh) | 聚合大文件的删除方法、装置、设备及计算机存储介质 | |
CN111209253A (zh) | 分布式存储设备性能提升方法、装置及分布式存储设备 | |
CN117156172B (zh) | 视频切片上报方法、系统、存储介质及计算机 | |
CN111125171A (zh) | 一种监测数据存取方法、装置、设备及可读存储介质 | |
CN107704507B (zh) | 数据库处理方法和设备 | |
CN103207872A (zh) | 一种实时索引方法和服务器 | |
CN106844236A (zh) | 终端设备的数据存储方法和装置 | |
CN101923553A (zh) | Fat文件系统的安装方法 | |
CN108959614A (zh) | 一种快照管理方法、系统、装置、设备及可读存储介质 | |
CN104965862A (zh) | 一种内存数据库集群的同步方法及内存数据库主机 | |
WO2011137684A1 (zh) | 基于嵌入式系统的信息记录的检索方法和装置 | |
CN101650735B (zh) | 一种数据初始状态恢复方法、装置和单点登录系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |