CN118120212A - 一种文件去重方法、装置和设备 - Google Patents
一种文件去重方法、装置和设备 Download PDFInfo
- Publication number
- CN118120212A CN118120212A CN202180103614.0A CN202180103614A CN118120212A CN 118120212 A CN118120212 A CN 118120212A CN 202180103614 A CN202180103614 A CN 202180103614A CN 118120212 A CN118120212 A CN 118120212A
- Authority
- CN
- China
- Prior art keywords
- file
- storage space
- characteristic information
- data
- module
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 162
- 230000006870 function Effects 0.000 claims description 66
- 230000010365 information processing Effects 0.000 claims description 47
- 238000005070 sampling Methods 0.000 claims description 38
- 230000004044 response Effects 0.000 claims description 16
- 238000004422 calculation algorithm Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 abstract description 25
- 238000013461 design Methods 0.000 description 43
- 239000010410 layer Substances 0.000 description 29
- 238000010586 diagram Methods 0.000 description 18
- 230000009286 beneficial effect Effects 0.000 description 13
- 230000003993 interaction Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 8
- 238000004140 cleaning Methods 0.000 description 7
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000011835 investigation Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Abstract
本申请实施例提供一种文件去重方法、装置和设备,该方法在文件写入过程中,响应于写请求,暂存写请求中的文件在第一存储空间中,并将写请求中的文件与第二存储空间中的文件进行对比,从而判断写请求中的文件是否为重复文件。通过该方法,能够实现在文件写入过程中自动去除重复文件,减少存储空间占用;用户无需主动发起文件去重请求,降低性能开销。
Description
本申请涉及通信技术领域,尤其涉及一种文件去重方法、装置和设备。
终端设备存储空间消耗快,存储空间不足是用户换机关键因素之一。随着移动互联网及智能终端等设备的普遍应用,社交过程所产生的重复文件越来越多,占用大量空间。为了降低重复文件对存储空间的占用,当前已经有一些用于文件去重的应用(例如各种手机清理工具),手机清理工具可以提供用户入口,用户手动启动后可扫描及识别出终端设备中的重复文件,获得扫描结果,并将扫描结果提供给用户;用户通过手动操作,逐个确认及删除重复文件。但是,采用这种方式扫描时间长,而且需要用户逐个选择及清除重复文件,耗时较长;并且由于每个文件可能都是对应到一个社交软件交互窗口,直接删除重复文件后可能导致交互窗口显示异常或对话不可用。因此,如何在用户和应用无感的情况下有效地去除重复文件成为待解决的问题。
发明内容
本申请实施例提供一种文件去重方法、装置和设备,该方法能够自动去除重复文件,减少存储空间占用;并且对应用无感,也无需用户进行复杂的操作,降低系统的处理开销。
第一方面,本申请实施例提供一种文件去重方法,该文件去重方法由终端设备或者部署在云上的设备来实现。其中,终端设备或者部署在云上的设备获取写请求,写请求中包括第一文件;响应于写请求,存储第一文件,第一文件存储于第一存储空间;确定第二存储空间中是否存在第二文件,第二文件与第一文件相同,第二存储空间与第一存储空间位于存储系统的不同层。例如,第一存储空间位于内存空间,第二存储空间位于外存空间(例如磁盘)。该方法中,在获取到写请求时,即将写请求中包含的第一文件存储于一个独立的存储空间(第一存储空间)中,并判断第二存储空间中已经存储的现有文件中是否存在与第一文件相同的文件(即判断是否存在重复文件)。该方法在获取写请求的同时进行重复检查,实现在线去除重复文件(也称为在线文件去重),可以做到用户和应用无感;且该方法(在线文件去重)不需要像现有技术中将已写入外存空间(例如磁盘)的文件重新读到缓存中再进行去重操作,能够减少重复写入硬盘的次数,避免重复文件所产生的硬盘写入的开销;且该方法可以在用户开启文件去重功能之后就在每次收到写请求时均进行重复检查,避免了用户重复手动进行去重操作,能够提升用户体验。
在一种可能的设计中,第一方面提供的文件去重方法可以应用于终端设备的应用程序执行写操作的场景中。其中,终端设备获取应用程序的写请求,写请求中包括第一文件;响应于写请求,将第一文件存储于第一存储空间中;确定第二存储空间中是否存在第二文件,第二文件与第一文件相同,第二存储空间与第一存储空间位于存储系统的不同层。通过该方法,终端设备能够实现应用程序执行的写操作过程中的在线文件去重,减少存储空间占用。并且对于终端设备来说,文件去重过程对应用无感,无需终端设备内部的生态配合,也无需用户进行复杂的操作,系统开销较低。
在一种可能的设计中,在不存在第二文件的情况下,将第一文件存储于第三存储空间, 并在第三存储空间内对第一文件执行缓存区操作;执行完缓存区操作后,将第一文件存储于第二存储空间。通过该方法,在现有的文件缓存空间(第三存储空间)中新建一个第一存储空间,用于执行文件查重操作,从而实现在线文件去重。
在一种可能的设计中,在不存在第二文件的情况下,在第一存储空间内对第一文件执行缓存区操作;执行完缓存区操作后,将第一文件存储于第二存储空间。通过该方法,第一存储空间用于执行文件查重操作,从而实现在线文件去重;并且第一存储空间与现有的文件缓存空间兼容,有利于工程实现;将设置标志位、写检查与空间分配等缓存区操作简化并推迟,有利于降低系统操作开销。
在一种可能的设计中,在存在第二文件的情况下,将第一文件的链接标识与第二文件相关联,第一文件的链接标识用于获取第一文件,再从第一存储空间中删除第一文件。通过该方法,当存在重复文件时,系统可以直接从缓存中删除重复文件而不会产生额外的数据拷贝,有利于降低系统开销;并且删除重复文件后,该文件的链接标识与已存储在系统中的文件相关联,使得该文件也可以被查找。
在一种可能的设计中,第二文件与第一文件相同,表示第二文件的特征信息与第一文件的特征信息相同。通过该方法,采用特征信息的比对可以确定写请求中的文件是否为重复文件。
在一种可能的设计中,根据第一文件的抽样数据,确定第一文件的特征信息。其中,抽样数据是通过采样算法从第一文件的数据中获取的部分数据。通过该方法,仅抽样少量文件数据用于获取特征信息,有利于降低系统开销。
在一种可能的设计中,根据第一文件的抽样数据和文件信息,确定第一文件的特征信息。其中,文件信息包括文件类型、文件大小等信息。通过该方法,将抽样数据和文件信息相结合,能够更准确地体现出文件的特征信息以及特征信息的唯一性。
在一种可能的设计中,特征信息包括指纹信息和/或文件标识ID。其中,文件的特征信息具有唯一性,对于每一个文件来说该文件的特征信息是唯一的。
在一种可能的设计中,响应于关闭第一文件的指令,确定第一文件的特征信息。通过该方法,确定文件的特征信息的过程可以是在写操作完成后的文件关闭操作过程中来执行,有利于降低系统开销。
在一种可能的设计中,确定第一文件的特征信息;根据第一文件的特征信息,通过索引目录,确定索引目录中是否存在第三文件,第三文件的文件名与第一文件的特征信息相同,第三文件与第二文件的存储地址相关联。通过该方法,基于查找本申请实施例提供的一种索引目录,可以判断第一文件是否为重复文件,有利于更有效地去除重复文件。
在一种可能的设计中,在索引目录中不存在第三文件的情况下,在索引目录中增加第四文件,第四文件的文件名为第一文件的特征信息,第四文件与第一文件的存储地址相关联。通过该方法,当写请求中的文件不是重复文件时,可以更新索引目录,使得索引目录包括已写入磁盘的文件,有利于更准确地判断是否系统中是否存在重复文件。
在一种可能的设计中,生成提示信息,提示信息包括以下一种或多种:已删除重复文件的提示、删除重复文件所释放的存储容量、删除重复文件的数量、重复文件的文件类型。通过该方法,可以向用户显性地展示文件去重的性能,增强用户体验。
在一种可能的设计中,生成记录日志,记录日志包括以下一项或多项内容:索引目录中的数据、第一文件标识对应的存储位置、第一存储空间中的数据、删除重复文件所释放的存储容量、删除重复文件的数量、删除重复文件的文件类型。通过该方法,可以对外提供调试 应用程序接口API或者调试日志,有利于用户进行系统调试。
在一种可能的设计中,获取指令,该指令指示开启文件去重功能;响应于该指令,执行获取写请求的操作。通过该方法,可以向用户提供文件去重功能开关,用户只需打开开关即可实现自动的文件去重,用户无需参与文件去重过程,优化了用户体验。
在一种可能的设计中,执行第一方面的文件去重方法的整体过程可以嵌入文件访问过程的主流程。通过该方法,无需扩展独立的文件去重线程,而是嵌入现有的线程中,有利于降低开销。
第二方面,本申请实施例提供一种文件查找方法,该文件查找方法由终端设备或者部署在云上的设备来实现。其中,终端设备或者部署在云上的设备获取第一文件,并确定第一文件的特征信息;根据第一文件的特征信息,确定索引目录中是否存在第三文件,第三文件的文件名与第一文件的特征信息相同,第三文件与第二文件的存储地址相关联,第二文件存储于第二存储空间。该方法中,通过文件的形式构建索引目录,索引目录中的第三文件与第二存储空间中存储的第二文件一一对应,以第二文件的特征信息作为第三文件的文件名,将第三文件与第二文件的存储地址相关联,例如,可以在第三文件中存储第二文件的存储地址等。该方法中以文件的形式存储的索引目录所需的存储空间小,极大的减少了存储开销;且该方法下的索引目录较现有技术的查找速度更快,能够极大的提升系统性能。
在一种可能的设计中,根据第一文件的抽样数据,确定第一文件的特征信息;其中,抽样数据是通过采样算法从第一文件的数据中获取的部分数据。通过该方法,仅抽样少量文件数据用于获取特征信息,有利于降低系统开销。
在一种可能的设计中,在索引目录中不存在第三文件的情况下,将第一文件存储于第二存储空间,并在索引目录中增加第四文件,第四文件的文件名为第一文件的特征信息,第四文件与第一文件的存储地址相关联。通过该方法,当写请求中的文件不是重复文件时,可以更新索引目录,使得索引目录包括已写入磁盘的文件,有利于更准确地判断系统中是否存在重复文件。
在一种可能的设计中,在索引目录中存在第三文件的情况下,将第一文件的链接标识与第二文件的存储地址相关联,第一文件的链接标识用于获取第一文件。通过该方法,当第一文件为重复文件,且重复文件被删除后,若需要访问对应的文件,可以访问到第一文件的链接标识所关联的第二文件的存储地址,从而保持正常的文件访问。
在一种可能的设计中,生成提示信息,提示信息包括以下一种或多种:已删除重复文件的提示、删除重复文件所释放的存储容量、删除重复文件的数量、重复文件的文件类型。通过该方法,可以向用户显性地展示文件去重的性能,增强用户体验。
在一种可能的设计中,生成记录日志,记录日志包括以下一项或多项内容:索引目录中的数据、第一文件标识对应的存储位置、第一存储空间中的数据、删除重复文件所释放的存储容量、删除重复文件的数量、删除重复文件的文件类型。通过该方法,可以对外提供调试应用程序接口API或者调试日志,有利于用户进行系统调试。
在一种可能的设计中,获取指令,该指令指示开启文件去重功能;响应于该指令,执行获取写请求的操作。通过该方法,可以向用户提供文件去重功能开关,用户只需打开开关即可实现自动的文件去重,用户无需参与文件去重过程,优化了用户体验。
在一种可能的设计中,执行第二方面的文件查找方法的整体过程可以嵌入文件访问过程的主流程。通过该方法,无需扩展独立的文件去重线程,而是嵌入现有的线程中,有利于降低开销。
第三方面,本申请实施例提供一种文件去重装置,该文件去重装置包括文件操作模块、文件缓存模块和信息处理模块。其中,文件操作模块用于获取写请求,写请求中包括第一文件;文件缓存模块用于响应于写请求,存储第一文件,第一文件存储于第一存储空间;信息处理模块用于确定第二存储空间中是否存在第二文件,第二文件与第一文件相同,第二存储空间与第一存储空间位于存储系统的不同层。
在一种可能的设计中,文件缓存模块还用于在不存在第二文件的情况下,将第一文件存储于第三存储空间,并在第三存储空间内对第一文件执行缓存区操作;执行完缓存区操作后,将第一文件存储于第二存储空间。
在一种可能的设计中,文件缓存模块还用于在不存在第二文件的情况下,在第二存储空间内对第一文件执行缓存区操作;执行完缓存区操作后,将第一文件存储于第二存储空间。
在一种可能的设计中,信息处理模块还用于在存在第二文件的情况下,将第一文件的链接标识与第二文件相关联,第一文件的链接标识用于获取第一文件;文件缓存模块还用于从第一存储空间中删除第一文件。
在一种可能的设计中,特征信息包括指纹信息和/或文件ID。其中,文件的特征信息具有唯一性,对于每一个文件来说该文件的特征信息是唯一的。
在一种可能的设计中,信息处理模块还用于根据第一文件的抽样数据,确定第一文件的特征信息,抽样数据是通过采样算法从第一文件的数据中获取的部分数据。
在一种可能的设计中,信息处理模块还用于确定第一文件的特征信息;根据第一文件的特征信息,确定索引目录中是否存在第三文件,第三文件的文件名与第一文件的特征信息相同,第三文件与第二文件在第二存储空间中的存储地址相关联。
在一种可能的设计中,该文件去重装置还包括提示模块,提示模块用于生成提示信息,提示信息包括以下一种或多种:已删除重复文件的提示、删除重复文件所释放的存储容量、删除重复文件的数量、重复文件的文件类型。
在一种可能的设计中,该文件去重装置还包括生成模块,生成模块用于生成记录日志,记录日志包括以下一项或多项内容:索引目录中的数据、第一文件标识对应的存储位置、第一存储空间中的数据、删除重复文件所释放的存储容量、删除重复文件的数量、删除重复文件的文件类型。
在一种可能的设计中,该文件去重装置还包括执行模块,所述执行模块用于获取指令,该指令指示开启文件去重功能;响应于该指令,执行获取写请求的操作。
上述第三方面及其任意一种可能的设计中所提供的实现文件去重方法的模块,也能实现第一方面提供的文件去重方法所具备的有益效果。
第四方面,本申请实施例提供一种文件查找装置,该文件查找装置包括文件操作模块和信息处理模块。其中,文件操作模块用于获取第一文件,信息处理模块用于确定第一文件的特征信息;文件操作模块还用于根据第一文件的特征信息,确定索引目录中是否存在第三文件,第三文件的文件名与第一文件的特征信息相同,第三文件与第二文件的在第二存储空间的存储地址相关联。
在一种可能的设计中,信息处理模块用于确定第一文件的特征信息,包括:
根据第一文件的抽样数据,确定第一文件的特征信息;抽样数据是通过采样算法从第一文件的数据中获取的部分数据。
在一种可能的设计中,该文件查找装置还包括文件缓存模块,文件缓存模块用于在索引目录中不存在第三文件的情况下,将第一文件存储于第二存储空间,并在索引目录中增加第 四文件,第四文件的文件名为第一文件的特征信息,第四文件与第一文件的存储地址相关联。
在一种可能的设计中,信息处理模块还用于在索引目录中存在第三文件的情况下,将第一文件的链接标识与第二文件相关联,第一文件的链接标识用于获取第一文件;文件缓存模块还用于从第一存储空间中删除第一文件。
上述第四方面及其任意一种可能的设计中所提供的实现文件查找方法的模块,也能实现第二方面提供的文件查找方法所具备的有益效果。
第五方面,本申请实施例提供一种设备,该设备可以是终端设备或者部署在云上的设备。其中,该设备包括一个或多个处理器和存储器;存储器与一个或多个处理器耦合,存储器存储有计算机程序,一个或多个处理器执行计算机程序时,该设备执行如下操作:
获取写请求,写请求中包括第一文件;
响应于写请求,存储第一文件,第一文件存储于第一存储空间;
确定第二存储空间中是否存在第二文件,第二文件与第一文件相同,第一存储空间与第二存储空间位于存储系统的不同层。
关于第一存储空间、第二存储空间、第一文件的抽样数据、第一文件的特征信息、第一文件的链接标识与第二文件相关联、生成提示信息、生成记录日志等的介绍请参见第一方面中对应的描述,此处不再赘述。
第六方面,本申请实施例提供一种设备,该设备可以是终端设备或者部署在云上的设备。其中,该设备包括一个或多个处理器和存储器;存储器与一个或多个处理器耦合,存储器存储有计算机程序,一个或多个处理器执行计算机程序时,该设备执行如下操作:
获取第一文件,并确定第一文件的特征信息;
根据第一文件的特征信息,确定索引目录中是否存在第三文件,第三文件的文件名与第一文件的特征信息相同,第三文件与第二文件在第二存储空间的存储地址相关联。
关于第一文件的特征信息、第三文件、第一文件的抽样数据、第一文件的链接标识与第二文件相关联等的介绍请参见第二方面中对应的描述,此处不再赘述。
第七方面,本申请实施例提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行以实现上述第一方面或第二方面及其可能实现的方式中的任一项所述的方法。
第八方面,本申请实施例提供一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现上述第一方面或第二方面所述的方法中终端设备或部署在云上的设备的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
第九方面,本申请实施例中提供一种计算机程序产品,包括指令,当所述指令在计算机上运行时,使得计算机执行第一方面或第二方面及其可能实现的方式中的任一项所述的方法。
图1a为一种用户手动操作执行文件去重功能的流程示意图;
图1b为一种用户手动操作执行文件去重功能后文件异常的示意图;
图2为本申请实施例提供的一种终端设备的硬件结构示意图;
图3为本申请实施例提供的一种终端设备的软件结构示意图;
图4a为本申请实施例提供的一种实现文件去重方法的模块化流程图;
图4b为本申请实施例提供的另一种实现文件去重方法的模块化流程图;
图5为本申请实施例提供的一种索引目录的示意图;
图6为本申请实施例提供的一种在安卓系统终端中面向应用程序实现文件去重功能的流程示意图;
图7a为本申请实施例提供的一种在第一存储空间中执行写操作的流程的示意图;
图7b为本申请实施例提供的另一种在第一存储空间中执行写操作的流程的示意图;
图8为本申请实施例提供的一种根据抽样数据确定特征信息的示意图;
图9为本申请实施例提供的一种将文件的链接标识与相同文件相关联的示意图;
图10为本申请实施例提供的一种链接对应关系的示意图;
图11为本申请实施例提供的一种输出文件访问授权界面的示意图;
图12为本申请实施例提供的一种外部设备调用文件去重功能的示意图;
图13为本申请实施例提供的一种文件去重方法的流程示意图;
图14为本申请实施例提供的一种文件查找方法的流程示意图;
图15为本申请实施例提供的一种设备的示意图;
图16为本申请实施例提供的一种文件去重装置的示意图;
图17为本申请实施例提供的一种文件查找装置的示意图。
在本申请实施例中,“/”可以表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;“和/或”可以用于描述关联对象存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。为了便于描述本申请实施例的技术方案,在本申请实施例中,可以采用“第一”、“第二”等字样对功能相同或相似的技术特征进行区分。该“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。在本申请实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明,被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
终端设备存储空间消耗快,存储空间不足是用户换机关键因素之一。随着移动互联网及智能终端等设备的普遍应用,社交过程所产生的重复文件越来越多,占用大量空间。例如,从部分调研数据看,在部分用户保有清理文件的习惯的前提下,超过1/4的用户的重复文件所占容量大于2千兆字节(Gigabyte,GB);调研对象中重复文件最高达16.49GB,甚至更多。
因此,为了降低重复文件对存储空间的占用,一方面,当前已经有一些用于文件去重的应用(例如各种手机清理工具)。其中,手机清理工具可以提供用户入口,用户手动启动后可扫描及识别出终端设备中的重复文件,获得扫描结果,并将扫描结果提供给用户。用户通过手动操作,逐个确认及删除重复文件。例如,图1a示出了一种用户手动操作执行文件去重功能时的流程。其中,终端设备的显示界面将显示目前系统已被占用的存储空间、垃圾文件、重复文件等信息。用户可以手动选择清理重复文件,终端设备的显示界面将显示多个重复文件和文件的来源,如图1a所示。但是,采用这种方式扫描时间长,而且需要用户逐个选择及清除重复文件,耗时较长;并且由于每个文件可能都是对应到一个社交软件交互窗口,直接删除重复文件后可能导致交互窗口显示异常或对话不可用。例如,图1b示出了一种用户手动 操作执行文件去重功能后文件异常的情况。由于用户在清理重复文件时直接删除重复文件,当用户再次打开社交软件交互窗口查找图片时,导致交互窗口无法正常显示原图片。
另一方面,目前还存在通过提供应用程序接口(application interface,API)模式实现文件去重的方案。例如,苹果文件系统(Apple file system,APFS)具有写时复制功能。若用户操作为复制存储在APFS上的文件,并将其复制到同一APFS文件系统上的另一个文件夹,则APFS将创建一个标记为“写时复制”的新文件,并指向原始文件的所有存储。但是,这种文件去重方案中APFS不会尝试确定现有文件或从外部源复制的文件是否与文件系统上已有的任何文件匹配。并且该方案需要提供API,需应用生态配合修改,导致应用场景极大的受限。
因此,如何在用户和应用无感的情况下有效地去除重复文件成为待解决的问题。
为了解决上述问题,本申请实施例提供一种文件去重方法,该文件去重方法能够有效去除重复文件,减少存储空间占用;并且该文件去重方法应用于终端设备中时,对终端设备中的应用无感,也无需用户进行复杂的操作,降低系统的处理开销。
其中,本申请实施例提供的文件去重方法可以应用于终端设备,或者部署在云上的设备中。可选的,该文件去重方法还可以应用于由终端设备控制的对云上的文件进行文件去重的场景中。下面首先介绍本申请以下实施例中提供的示例性终端设备。
图2示出了终端设备100的结构示意图。终端设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对终端设备100的具体限定。在本申请另一些实施例中,终端设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路 (inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuit sound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purpose input/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(display serial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现终端设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现终端设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为终端设备100充电,也可以用于终端设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端设备,例如AR设备等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备100的结构限定。在本申请另一些实施例中,终端设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
终端设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。在一些实施例中,终端设备100可以包括1个或N个显示屏194,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备100的各种功能应用以及数据处理。
基于图2所示本申请实施例的终端设备100的硬件结构示意图,下面介绍本申请实施例的终端设备100的软件结构框图,如图3所示。
终端设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明终端设备100的软件结构。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图3所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,短信息和多屏代理等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图3所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器和多屏框架等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供终端设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
多屏框架用于将终端设备100与大屏设备建立连接的各个事件通知到应用程序层的“多屏代理”,还可以用于响应于应用程序层的“多屏代理”的指令辅助该“多屏代理”获取数据信息。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库,2D图形引擎等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
图4a为本申请实施例提供的一种实现文件去重方法的模块化流程图。图4a以终端设备内部的模块化流程为例进行描述。可以理解,当本申请实施例提供的文件去重方法应用于云上,或者应用于终端与云上的交互场景中时,也存在类似于图4a的模块化流程。其中,终端设备中的现有的文件访问流程包括:当应用程序发起文件访问请求时,系统通过写操作(write)将文件访问请求中的文件直接写入VFS中的文件缓存,然后将文件访问请求中的文件写入文件系统。进一步,还可以将文件写入驱动和闪存(flash)中。也就是说,现有的文件访问流程中直接通过写操作将文件写入内存空间和外存空间,不能实现对重复文件的判断和在线文件去重。图4a所示的实现文件去重方法的模块化流程主要包括文件操作模块、文件缓存模块、信息处理模块、文件索引模块和VFS等。其中,区别于现有的文件访问流程,图4a所示的文件缓存模块为内存空间中新建的缓存模块,用于拦截系统的写操作,缓存写操作中的文件;并结合信息处理模块和文件索引模块,实现对缓存的文件计算特征信息,根据特征信息判断文件是否为重复文件,对重复文件进行在线去重。在图4a所示的模块化流程中,当文件缓存模块、信息处理模块和文件索引模块执行上述操作后,再将非重复文件继续写入VFS,并写入文件系统/块设备层/驱动/闪存中,完成文件访问流程。采用图4a所示的文件去重流程,需要在现有的内存空间中新增一个缓存空间,用于实现在线文件去重。应注意,图4a所示的文件缓存模块主要用于执行文件对比和文件去重的操作,文件访问流程中的缓存区操作(例如设置标志位、写检查与空间分配等操作)仍然由VFS中的文件缓存来执行。
图4b为本申请实施例提供的另一种实现文件去重方法的模块化流程图。图4b以终端设备内部的模块化流程为例进行描述。可以理解,当本申请实施例提供的文件去重方法应用于云上,或者应用于终端与云上的交互场景中时,也存在类似于图4b的模块化流程。其中,区别于现有的文件访问流程,图4b所示的文件缓存模块对原有的文件缓存进行了增强,例如新增了对缓存的文件计算特征信息、文件比对和文件去重等功能,从而实现在线文件去重;文件访问流程中的缓存区操作(例如设置标志位、写检查与空间分配等操作)也由图4b所示的文件缓存模块来执行,但是执行的顺序与现有文件访问流程相比有延迟。也就是说,图4b所示的VFS中的文件缓存将不执行写操作(例如不再执行缓冲区操作)。
综上所述,在图4a或图4b所示的模块化流程中,本申请实施例提供的文件去重方法流程可以是嵌入现有的文件访问流程中,不需要独立的后台线程,有利于降低系统的写开销。并且,本申请实施例新建了文件缓存模块,用于实现在线文件去重。
为了便于理解,下面对本申请实施例涉及的相关名词进行介绍。
1、文件操作模块:用于拦截应用程序的文件访问请求,调用文件缓存模块缓存数据,调用信息处理模块识别重复文件,结合文件缓存模块和信息处理模块去除重复文件或保存非重复文件。
2、文件缓存模块:用于构建独立的自建文件缓存空间,并通过自建文件缓存空间缓存拦 截的文件。例如,采用图4a所示的方式在现有的内存空间中新建一个缓存空间,缓存并存放拦截的文件数据;或者图4b所示的方式采用自建文件缓存空间替换VFS的文件缓存中的文件缓存,用于存放拦截的文件数据。
3、信息处理模块:用于从文件缓存模块中获取文件数据并计算文件的特征信息,还用于向文件索引模块发起特征信息检索请求或新增特征信息的请求。
4、文件索引模块:用于构建及维护索引目录,在索引目录中检索目标特征信息。其中,索引目录可以视为一种类数据库,该索引目录不会占用内存。
5、文件目录:用于记录文件系统中存储的文件。文件目录中的目录项包括但不限于文件名,文件的链接标识、文件的重复次数等。
6、文件的特征信息:用于指示每一个文件具有唯一性的信息。文件的特征信息可以包括但不限于指纹,文件ID等。例如,对于两个文件(文件1和文件2),当文件1和文件2的内容不相同时,文件1的指纹1和文件2的指纹2是不相同的,即指纹1用于标识文件1,指纹2用于标识文件2。可选的,当文件1和文件2的内容相同时(包括但不限于文件1和文件2的内容相同且文件名相同,文件1和文件2的内容相同且文件名不相同),文件1和文件2的指纹相同(例如都为指纹1)。
7、索引目录:一种数据存取模式,在系统中创建一个目录作为索引目录。例如,本申请实施例中的索引目录可以是一种特征信息的索引表。其中,该索引目录是由文件索引模块采取基于文件目录的索引方式构建与维护的。索引目录包括一条或多条特征信息索引,例如包括多条指纹索引。每一条指纹索引对应一个索引目录中的文件,文件名是指纹,文件对应的链接标识(inode)表示指纹对应的文件的inode。例如,图5为本申请实施例提供的一种索引目录的示意图。其中,系统中包括文件A、文件B和文件C,文件A的链接标识为inode1,文件B的链接标识为inode2,文件C的链接标识为inode3。在构建索引目录时,针对文件A,首先计算文件A的特征信息(即计算文件A的指纹),生成指纹A1,并且指纹A1指向文件A的链接标识inode1,则生成索引目录中的一条指纹索引:指纹A1-inode1。类似的,针对文件B和文件C等文件,生成索引目录中的其他指纹索引:指纹B2-inode2、指纹C3-inode3等,如图5所示。其中,通过将文件指纹和文件的链接标识相关联,使得在查找索引目录时,可以直接通过链接标识获取文件所在的位置,从而有利于实现更高效的文件查找。
下面将结合图4a和图4b,以安卓系统为例,详细描述该文件访问方法应用于安卓系统终端设备时的应用实施例。
图6为本申请实施例提供的一种在采用安卓系统的终端设备中面向应用程序实现文件去重功能的流程示意图。该场景中,终端设备中的应用程序在请求写入文件时,终端设备可以在文件写入过程中执行文件去重方法,具体流程由本申请实施例提供的文件操作模块、信息处理模块、文件缓存模块和文件索引模块之间的交互实现,包括以下步骤:
1、在应用程序请求写入文件时,文件操作模块获取写请求,写请求中包括第一文件。文件操作模块调用文件缓存模块,将第一文件存储于第一存储空间。
一种实现方式中,在图4a所示模块化流程中,当文件操作模块检测到应用程序的写请求时,可以拦截该写请求,并将写请求中的第一文件缓存至新增的文件缓存模块(第一存储空间)。在文件缓存模块中执行计算特征信息、重复文件对比、去除重复文件等操作,如图7a所示。当文件缓存模块执行完文件去重操作后,再采用标准write函数系统调用,将写请求中的文件缓存至VFS(第三存储空间),在VFS中继续执行缓存区操作。其中,图7a中的缓存区操作是指在文件缓存模块中未执行的写请求操作,包括但不限于设置标志位、写检查与空 间分配、数据写回等操作。图7a中的缓存区操作与现有写请求中的缓存区操作是相同的,例如,将一个文件分为多页(page),对每一个page执行设置标志位、写检查与空间分配、数据写回等操作。当同一文件的多个page都被执行上述缓存区操作后,该文件将被写入磁盘,同时系统将释放该文件占用的内存。可见,图7a所示的流程中采用两次缓存串行模式,在现有缓存中嵌入拦截缓存、计算及去重功能;根据文件的特征信息,对重复文件执行去重操作,不再向系统继续写入重复文件,直接从内存中丢弃重复文件;对非重复文件继续写入系统。
一种实现方式中,在图4b所示模块化流程中,当文件操作模块检测到应用程序的写请求时,文件操作模块自定义系统调用缓存(caching)函数,首先构建自建文件缓存(第一存储空间);通过文件缓存模块基于从用户复制(copy_from_user)函数将拦截的第一文件一次性缓存至自建文件缓存,如图7b所示。其中,一次性缓存是指将同一文件的page全部都缓存至自建文件缓存,而不是按照每一个page逐个缓存。在一次性缓存的实现方式中,缓存区操作将被推迟和简化。例如,针对M个page,缓存区操作包括设置标志位M次、写检查与空间分配1次、数据写回N次。其中,在图7b所示的文件缓存模块中可以计算已缓存的文件的特征信息,从而判断已缓存的文件是否为重复文件。若为重复文件,则从内存中丢弃重复文件;若为非重复文件,则继续写入系统。可见,图7b所示的流程中构建独立的自建文件缓存来缓存文件数据,一次实现计算文件特征信息以及向下写入缓存,实现整个去重操作只有一次数据拷贝;同时将缓存操作优化推迟,重复数据最终将从内存中丢弃,不产生外存写操作,实现在文件访问的路径中完成低开销的文件去重。
可选的,图7b所示的实现方式中,缓存区操作、计算特征信息和去除重复文件等操作可以是在关闭操作的过程中执行。其中,关闭操作为写操作之后执行的文件操作,当写操作(例如文件写入自建文件缓存)执行完成后,系统可以执行关闭操作,在执行关闭操作的过程中,继续执行图7b所示的缓存区操作、计算特征信息和去除重复文件等操作,从而有利于降低系统写操作开销。
2、信息处理模块通过抽样算法确定第一文件的特征信息。具体的,信息处理模块采用一种抽样哈希的算法,获取第一文件的抽样数据,并根据第一文件的抽样数据确定第一文件的特征信息。可见,信息处理模块仅需要抽样少量文件数据用于获取特征信息,有利于降低系统开销。可选的,信息处理模块还可以根据第一文件的抽样数据和第一文件的文件信息,确定第一文件的特征信息。其中,特征信息可以包括但不限于指纹信息、文件ID等,文件信息可以包括但不限于文件类型、文件大小等。可以理解,结合第一文件的抽样数据和第一文件的文件信息计算确定的第一文件的特征信息更能够体现第一文件的唯一性。
例如,图8为本申请实施例提供的一种抽样计算特征信息的示意图。其中,第一存储空间可以视为一种树型结构的数据,文件存储于page中。信息处理模块可以通过抽样哈希算法,获取文件的抽样数据。例如抽样page1、page3和page5的部分数据,分别构成抽样数据的首段循环冗余校验(cyclic redundancy check,CRC)、中段CRC和尾段CRC,如图8所示。再结合文件信息(例如文件类型、文件大小等信息),确定特征信息,例如也称为文件的指纹(fingerprint,FP)。其中,信息处理模块通过抽样计算的方式会使得计算特征信息的开销基本保持稳定,从而降低了抽样计算特征信息对存储系统写入性能的影响。
3、信息处理模块根据第一文件,判断第二存储空间中是否存在第二文件,第二文件与第一文件相同。一种实现方式中,具体的判断方法包括:信息处理模块确定第一文件的特征信息,并根据第一文件的特征信息,确定索引目录中是否存在第三文件,第三文件的文件名与第一文件的特征信息相同,第三文件与第二文件在第二存储空间中的存储地址相关联。其中, 若第二存储空间中存在第二文件的特征信息与第一文件的特征信息相同,则表示第二文件与第一文件相同,则第一文件为重复文件。应注意,特征信息是具有唯一性的一种信息,当第一文件的特征信息与第二文件的特征信息相同时,可以确定第一文件和第二文件为相同的文件。
4、在存在第二文件的情况下,文件操作模块将第一文件的链接标识与第二文件相关联,第一文件的链接标识用于获取第一文件。也就是说,当第一文件为重复文件时,将第一文件的链接标识与第二文件相关联,使得当查找第一文件时,可以获取与第一文件相同的第二文件。当第一文件的链接标识与第二文件关联上之后,即使第一文件被删除,通过第一文件的链接标识也可以查找到相同的文件(即第二文件),从而保证文件方位路径的准确性。
例如,图9为本申请实施例提供的一种对重复文件的操作流程的示意图。图9中的左边部分为文件访问列表,示出了写请求中包括的文件和文件的链接标识。其中,该文件访问列表包括两列,第一列为文件名,第二列为文件的链接标识(inode)。其中,文件的链接标识用于获取该文件。图9中的右边部分示出了文件目录的部分目录项(包括文件的链接标识和文件写入重复次数)。可以理解,文件目录存储于第二存储空间。例如,写请求中包括的文件A的inode1。终端设备将文件A存储于第一存储空间中,并判断第二存储空间中是否存在第二文件,第二文件与文件A相同。具体判断方式,例如信息处理模块根据文件A的特征信息,判断第二存储空间中是否存在第二文件,第二文件的特征信息与文件A的特征信息相同。若不存在第二文件,则表示文件A不为重复文件。将文件A写入文件目录中。由于文件A为首次写入,文件A的写入重复次数为1。再一次写请求中包括的文件为文件D,文件D的链接标识为inode1。终端设备将文件D存储于第一存储空间中,并判断第二存储空间中是否存在第二文件,第二文件与文件D相同。具体判断方式,例如信息处理模块根据文件D的特征信息,判断第二存储空间中是否存在第二文件,第二文件的特征信息与文件D的特征信息相同。若文件A与文件D的特征信息相同,则表示文件D与文件A相同,文件D为重复文件。在这种情况下,文件操作模块将文件D的链接标识与文件A的链接标识相关联,例如文件D的inode1指向被重复的inode1,此时inode1对应的文件写入重复次数更新为2,如图9的右边表格的第二行第二列所示。
通过该方法,不需要重复进行实质写操作,只需要将重复文件的链接标识通过硬链接的方式与已存储的相同文件相关联,以便在后续调用时通过链接标识获取已存储的相同文件。例如,图10为文件去重后的一种链接对应关系。其中,inode1的重复次数为2,表示存在相同的文件都链接到inode1。文件系统只需要存储一次相同的文件。这种情况下,重复文件最终将从内存中丢弃,不产生外存写操作,实现在文件访问的路径中完成低开销的文件去重。并且,图10所示的链接对应关系中仍然包括文件D,则对于上层应用是无感的。可见,系统将不存在额外的数据拷贝,不与其他进程争夺计算资源,有利于降低文件写开销。并且去重过程是在输入输出(input/output,I/O)路径上完成的,不需要后台线程或服务离线响应。
一种实现方式中,文件索引模块对索引目录的操作可以包括但不限于创建指纹、插入指纹、检索指纹、删除指纹等。例如,在新建索引目录时,根据文件的特征信息创建索引目录中的文件,文件名为指纹。又例如,针对非重复文件,根据非重复文件的特征信息在索引目录中插入一个文件,文件名为非重复文件的指纹。
一种实现方式中,在图6所示的操作流程中,当安卓系统的终端设备面向社交软件执行文件去重方法时,上述步骤具体还可以是:
1、在安卓内核库中,修改典型写操作的代码:文件操作模块根据进程的应用ID判断当 前的写请求是否为社交软件发出的写请求;如果是社交软件发出的写请求,文件操作模块拦截该写请求,并调用文件缓存模块在内核中为目标文件建立独有的缓存空间(第一存储空间),用于缓存其写数据。
2、在安卓内核库中,修改典型关闭操作的代码:如果是社交软件发出的关闭请求,信息处理模块调用第一存储空间中第一文件的抽样数据,确定第一文件的特征信息;并在索引目录中检索是否存在第二文件的特征信息,第二文件的特征信息与第一文件的特征信息相同。若在索引目录中检索到相同的特征信息,则确定第一文件为重复文件,文件操作模块执行如图9所示的文件去重的操作。若在索引目录中未检索到相同的特征信息,则确定第一文件不为重复文件,文件操作模块调用第一存储空间中的第一文件替换文件系统中的第二存储空间中的缓存数据,并设置标志位,使得第一文件的数据能够被文件系统的后台线程同步回闪存。
下面对终端设备采用本申请实施例提供的文件去重方法的效果进行分析对比。表1为本申请实施例提供的一种存储空间对比表。其中,表1示出了在多次操作后,未去重设备空间占用和去重设备空间占用的对比。其中,多次操作可以包括但不限于:使用社交软件多次发送(视频/PPT/图片文件等)、使用浏览器多次保存文件到系统存储,从一个应用多次调用视频/PPT/图片到其他应用(如从社交软件保存图片到图库,从图库调用文件到社交软件)。
表1:存储空间对比表
可见,采用本申请实施例提供的文件访问方法,当应用程序多次进行重复操作时,终端设备的存储空间占用将不会依次增加,有利于降低存储空间的占用,并且对应用是无影响的。
一种示例中,如图6所示的操作流程为终端设备内部系统的操作,对用户来说是不可见的。但是,为了优化用户体验,呈现技术价值,终端设备还可以通过界面显示或语音提示等方式向用户展示文件去重的效果。
一种实现方式中,终端设备默认关闭文件去重功能,需要经过用户授权才能开启文件去重功能。具体实现方式可以是获取指令,该指令指示开启文件去重功能;响应于该指令,执行获取写请求的操作。例如,终端设备在系统设置等相关操作处提供文件去重功能的开关按钮,或者在新系统安装、升级等环节向用户提示是否开启文件去重功能。若用户确定开启文件去重功能,用户可以在系统设置中开启文件去重功能的开关按钮;对于终端设备来说,用户的这一操作转换为指令,该指令指示开启文件去重功能。响应于该指令,执行获取写请求的操作。
在开启文件去重功能的实现方式中,终端设备可以在输出用户提示。例如,在用户授权开启文件去重功能的界面或系统升级提示界面中输出用户提示,用户提示可以包括但不限于:提示系统可自动实时(或定时)实现应用透明、用户不用参与、开销极低的去重,实现存储 节省相关功能,如图11所示。又例如,终端设备可以通过语音播报的方式输出用户提示,向用户播报系统可以自动实时(或定时)实现文件去重功能。
在开启文件去重功能的实现方式中,终端设备可以生成提示信息,提示信息可以包括但不限于:已删除重复文件的提示、删除重复文件所释放的存储容量、删除重复文件的数量、重复文件的文件类型等。例如,在用户授权开启文件去重功能的界面中输出文件去重提示信息,该文件去重提示信息包括但不限于:提示系统按累计,年,月,日等统计呈现(应用无感、用户不用参与)自动优化存储空间20GB,优化1000组内容相同文件,类别为视频等,如图11所示。
一种示例中,如图6所示的操作流程为终端设备内部系统的操作,为了方便系统及应用开发,终端设备还可以生成记录日志,记录日志包括但不限于:索引目录中的数据、第一文件标识对应的存储位置、第一存储空间中的数据、删除重复文件所释放的存储容量、删除重复文件的数量、删除重复文件的文件类型。例如,终端设备可以生成文件去重功能的记录日志。该记录日志包括索引目录中的数据(例如索引目录中包括的一个或多个文件分别的特征信息和文件地址,可以是直接提供特征信息值和文件地址值,不用显示索引目录的数据结构),已删除的重复文件所释放的存储容量的具体值(例如已删除的重复文件所释放的存储容量为6GB),已删除的重复文件的数量(例如已删除重复文件1000组)等。
一种实现方式中,终端设备通过提供API给外部设备,使得外部设备可以通过API调用文件去重功能。例如,为方便系统及应用开发、调试文件去重功能,终端设备提供调试API,以使外部设备可以调用文件去重功能,例如通过API调用文件操作模块和信息处理模块等,使得外部设备可以执行文件去重功能,如图12所示。可以理解,当外部设备通过API调用实现文件去重的功能模块时,文件操作模块、信息处理模块、文件缓存模块和文件索引模块之间的交互参考图6实施例中的描述,此处不再赘述。该实现方式中的外部设备例如可以是服务器,当服务器通过API调用文件去重功能时,可以实现对服务器的自动文件去重,能够有效去除重复文件。
下面对本申请实施例提供的文件去重方法的具体流程进行详细的描述。
图13为本申请实施例提供的一种文件去重方法的流程示意图,该文件去重方法流程由终端设备或者部署在云上的设备所执行,包括以下步骤:
S101,获取写请求,写请求中包括第一文件。
其中,写请求用于请求写入文件,请求写入文件的方式可以是应用程序发起文件访问请求,例如,通过pwrite函数等控制信令执行写操作。
S102,响应于写请求,存储第一文件,第一文件存储于第一存储空间。
当拦截写请求后,可以缓存写请求中包括的第一文件,具体实现方式参考图4a或图4b中对应的描述,此处不再赘述。
S103,确定第二存储空间中是否存在第二文件,第二文件与第一文件相同,第二存储空间与第一存储空间位于存储系统的不同层。
其中,第一存储空间与第二存储空间位于存储系统的不同层,表示第一存储空间和第二存储空间是层级上的不同。例如,第一存储空间为内存空间(例如缓存),第二存储空间为外存空间(例如磁盘)。也就是说,在文件访问过程中,将写请求中的第一文件暂存至内存空间,不写入外存空间,有利于降低写入外存空间的开销。并且判断第一文件是否为重复文件后,若为重复文件则直接从内存空间中删除第一文件,实现在线文件去重。
一种实现方式中,为了减少写入性能的损失,本申请实施例中通过抽样文件的部分数据 来确定文件的特征信息。终端设备根据第一文件的抽样数据,确定第一文件的特征信息。具体实现方式,参考图8所示的一种通过抽样数据确定特征信息的方法,此处不再赘述。
一种实现方式中,在不存在第二文件的情况下,将第一文件存储于第三存储空间,并在第三存储空间内对第一文件执行缓存区操作;执行完缓存区操作后,将第一文件存储于第二存储空间。例如,如图4a所示的内存空间中,第一存储空间是指文件缓存模块占用的缓存空间,第三存储空间是指VFS中的文件缓存。其中,第一存储空间的数据结构与第三存储空间的数据结构相同。例如,第一存储空间采用缓存的数据结构,在第一存储空间中可以执行缓存文件的操作;第三存储空间也采用缓存的数据结构,在第三存储空间中也可以执行缓存文件的操作。该实现方式实现整个去重操作过程中有两次串行数据拷贝,具体实现方式参考图4a和图7a中对应的描述,此处不再赘述。在执行完缓存区操作后,将第一文件从内存空间写入外存空间,完成文件访问流程。
一种实现方式中,在不存在第二文件的情况下,在第一存储空间内对第一文件执行缓存区操作;执行完缓存区操作后,将第一文件存储于第二存储空间。例如,如图4b所示的内存空间中,第一存储空间包括文件缓存模块占用的缓存空间,以及VFS中的文件缓存。该实现方式实现整个去重操作过程中只有一次数据拷贝,具体实现方式参考图4b和图7b中对应的描述,此处不再赘述。在执行完缓存区操作后,将第一文件从内存空间写入外存空间,完成文件访问流程。
一种实现方式中,在存在第二文件的情况下,将第一文件的链接标识与第二文件相关联,并从第一存储空间中删除第一文件。其中,第一文件的链接标识用于获取第一文件。具体实现方式,参考图9中对应的描述,此处不再赘述。
一种实现方式中,当确定第一文件的特征信息后,根据第一文件的特征信息确定索引目录中是否存在第三文件,第三文件的文件名与第一文件的特征信息相同,第三文件与第二文件在第二存储空间中的存储地址相关联。其中,索引目录如图5所示。例如,计算第一文件的特征信息为指纹A1。通过查找如图5所示的索引目录,确定索引目录中存在指纹A1。则表示第一文件与第三文件的文件名相同,从而可以推导第三文件关联的文件A与第一文件为相同的文件,即第一文件为重复文件。其中,当索引目录中存在第三文件时,将第一文件的链接标识与第二文件相关联。具体实现方式,参考图9所示的一种文件关联的方式,此处不再赘述。
一种实现方式中,在索引目录中不存在第三文件的情况下,按照正常的文件访问流程将该第一文件写入文件系统。
一种实现方式中,在索引目录中不存在第三文件的情况下,在索引目录中新建第四文件,第四文件的文件名为第一文件的特征信息,第四文件与第一文件在第二存储空间中的存储地址相关联。也就是说,当第一文件不为重复文件时,可以在索引目录中插入新的指纹,从而有利于终端设备后续对其他文件的判断。例如,当再次拦截的写请求中包括第五文件时,判断索引目录中是否存在文件名与第五文件的特征信息相同。
一种实现方式中,该文件去重方法还包括以下步骤:
生成提示信息,提示信息包括以下一种或多种:已删除重复文件的提示、删除重复文件所释放的存储容量、删除重复文件的数量、重复文件的文件类型。具体实现方式,参考前文实施例中对生成提示信息的描述,此处不再赘述。
一种实现方式中,该文件去重方法还包括以下步骤:
生成记录日志,记录日志包括以下一项或多项内容:索引目录中的数据、第一文件标识 对应的存储位置、第一存储空间中的数据、删除重复文件所释放的存储容量、删除重复文件的数量、删除重复文件的文件类型。具体实现方式,参考前文实施例中对输出记录日志的描述,此处不再赘述。
一种实现方式中,该文件去重方法还包括以下步骤:
获取指令,该指令指示开启文件去重功能;
响应于该指令,执行获取写请求的操作。
具体实现方式,参考图11中对输出文件访问授权界面的描述,此处不再赘述。
本申请实施例提供了一种文件去重方法,该文件去重方法通过获取写请求,将写请求中的第一文件存储于第一存储空间中,并判断第二存储空间中是否存在第二文件,第二文件与第一文件相同。该方法能够有效去除终端设备的重复文件,减少存储空间占用;并且对应用无感,也无需用户进行复杂的操作,降低系统的处理开销。并且,当第一文件的数据被删除后,通过第一文件的链接标识也可以查询到相同的第二文件,从而不影响文件的访问流程。
一种示例中,图14为本申请实施例提供的一种文件查找方法的流程示意图。该文件查找方法也可以由终端设备或者部署在云上的设备所执行,包括以下步骤:
S201,获取第一文件,并确定第一文件的特征信息。
其中,本实施例中的第一文件可以是写请求中包括的文件。例如,在线模式下当检测到写请求时,获取写请求中包括的第一文件。第一文件也可以是已写入文件系统中的文件。例如,离线模式下检测文件系统中的一个或多个文件,并分别确定一个或多个文件分别的特征信息。
一种实现方式中,根据第一文件的抽样数据,确定第一文件的特征信息。其中,抽样数据是通过采样算法从第一文件的数据中获取的部分数据。具体实现方式,参考图6和图8实施例中对确定第一文件的特征信息以及对抽样数据获取方法的描述,此处不再赘述。可以理解,通过抽样的方式获取第一文件的特征信息,有利于降低数据处理的开销。
S202,根据第一文件的特征信息,确定索引目录中是否存在第三文件,第三文件的文件名与第一文件的特征信息相同。
其中,第三文件为索引目录中的文件,第三文件与第二文件的在第二存储空间的存储地址相关联,即表示第三文件所指向的第二文件已写入磁盘中,是系统中已存在的文件。通过索引目录,可以查找系统中是否已存在与第一文件相同的文件。
一种实现方式中,在索引目录中不存在第三文件的情况下,将第一文件存储于第二存储空间,并在索引目录中增加第四文件,第四文件的文件名为第一文件的特征信息,第四文件与第一文件的存储地址相关联。例如,计算第一文件的特征信息为指纹D4。通过查找如图5所示的索引目录,确定索引目录中不存在指纹D4。则表示系统中不存在与第一文件相同的文件,第一文件为非重复文件。在如图5所示的索引目录中插入第四文件,第四文件的文件名为指纹D4,并且第四文件指向第一文件在第二存储空间中的存储地址。
一种实现方式中,在索引目录中存在第三文件的情况下,将第一文件的链接标识与第二文件相关联,并从第一存储空间中删除第一文件。其中,第一文件的链接标识用于获取第一文件。具体实现方式,参考图9和图10实施例中对应的描述,此处不再赘述。
本申请实施例提供一种文件查找方法,该文件查找方法获取第一文件,并确定第一文件的特征信息;根据第一文件的特征信息,确定索引目录中是否存在第三文件,第三文件的文件名与第一文件的特征信息相同。通过索引目录查找的方式有利于简化文件的查找流程。并且,当第一文件为重复文件,且重复文件被删除后,若需要访问对应的文件,可以访问到第 一文件的特征信息链接到的第二文件(与第一文件相同的文件),从而保持正常的文件访问。
为了实现本申请实施例提供的方法中的各功能,本申请实施例提供的装置或设备可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
图15为本申请实施例提供的一种设备1500,用于实现上述方法实施例中的文件去重功能或文件查找功能。该设备可以是终端设备或者部署在云上的设备,也可以是终端设备或者部署在云上的设备中的装置,或者能够和终端设备或者部署在云上的设备匹配使用的装置。其中,该设备可以为芯片系统。设备1500包括至少一个处理器1502,用于实现本申请实施例提供的文件去重方法或文件查找方法中终端设备或者部署在云上的设备的功能。示例性地,处理器1502可以响应于写请求,将第一文件存储于第一存储空间中,具体参见方法示例中的详细描述,此处不做赘述。设备1500还可以包括至少一个存储器1503,用于存储程序指令和/或数据。存储器1503和处理器1502耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器1502可能和存储器1503协同操作。处理器1502可能执行存储器1503中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。设备1500还可以包括通信接口1501,该通信接口例如可以是收发器、接口、总线、电路或者能够实现收发功能的装置。其中,通信接口1501用于通过传输介质和其它设备进行通信,从而用于设备1500中的装置可以和其它设备进行通信。示例性地,该其它设备可以是终端。处理器1502利用通信接口1501收发数据,并用于实现图13或图14对应的实施例中所述的终端设备或部署在云上的设备所执行的方法。本申请实施例中不限定上述通信接口1501、处理器1502以及存储器1503之间的具体连接介质。本申请实施例在图15中以存储器1503、处理器1502以及通信接口1501之间通过总线1504连接,总线在图15中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器可以是非易失性存储器,比如硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
图16所示为本申请实施例提供的一种文件去重装置1600,该文件去重装置可以是终端 设备或者部署在云上的设备,也可以是终端设备或者部署在云上的设备中的装置,或者是能够和终端设备或者部署在云上的设备匹配使用的装置。一种设计中,该文件去重装置可以包括执行图13对应的示例中所描述的方法/操作/步骤/动作所一一对应的模块,该模块可以是硬件电路,也可是软件,也可以是硬件电路结合软件实现。一种设计中,该装置可以包括文件操作模块1601、文件缓存模块1602、信息处理模块1603。示例性地,文件操作模块1601用于获取写请求,写请求中包括第一文件。文件缓存模块1602用于响应于写请求,存储第一文件,第一文件存储于第一存储空间。信息处理模块1603用于确定第二存储空间中是否存在第二文件,第二文件与第一文件相同,第二存储空间与第一存储空间位于存储系统的不同层。
示例性地,文件缓存模块1602还用于:
在不存在第二文件的情况下,将第一文件存储于第三存储空间,并在第三存储空间内对第一文件执行缓存区操作;
执行完缓存区操作后,将第一文件存储于第二存储空间。
示例性地,文件缓存模块1602还用于:
在不存在第二文件的情况下,在第二存储空间内对第一文件执行缓存区操作;
执行完缓存区操作后,将第一文件存储于第二存储空间。
信息处理模块1603还用于在存在第二文件的情况下,将第一文件的链接标识与第二文件相关联,第一文件的链接标识用于获取第一文件;
文件缓存模块1602还用于从第一存储空间中删除第一文件。
示例性地,信息处理模块1603还用于:
根据第一文件的抽样数据,确定第一文件的特征信息;抽样数据是通过采样算法从第一文件的数据中获取的部分数据。
示例性地,信息处理模块1603还用于:
确定第一文件的特征信息;
根据第一文件的特征信息,确定索引目录中是否存在第三文件,第三文件的文件名与第一文件的特征信息相同,第三文件与第二文件在第二存储空间中的存储地址相关联。
示例性地,文件去重装置1600还包括生成模块1604,生成模块1604用于生成提示信息,提示信息包括以下一种或多种:已删除重复文件的提示、删除重复文件所释放的存储容量、删除重复文件的数量、重复文件的文件类型。
示例性地,生成模块1604还用于生成记录日志,记录日志包括以下一项或多项内容:索引目录中的数据、第一文件标识对应的存储位置、第一存储空间中的数据、删除重复文件所释放的存储容量、删除重复文件的数量、删除重复文件的文件类型。
示例性地,文件去重装置1600还包括执行模块1605,执行模块1605用于获取指令,该指令指示开启文件去重功能;响应于该指令,执行获取写请求的操作。
图17所示为本申请实施例提供的一种文件查找装置1700,该文件查找装置可以是终端设备或者部署在云上的设备,也可以是终端设备或者部署在云上的设备中的装置,或者是能够和终端设备或者部署在云上的设备匹配使用的装置。一种设计中,该文件查找装置可以包括执行图14对应的示例中所描述的方法/操作/步骤/动作所一一对应的模块,该模块可以是硬件电路,也可是软件,也可以是硬件电路结合软件实现。一种设计中,该装置可以包括文件操作模块1701和信息处理模块1702。示例性地,文件操作模块1701用于获取第一文件,并确定第一文件的特征信息。信息处理模块1702用于确定所述第一文件的特征信息。信息处理模块1702还用于根据第一文件的特征信息,确定索引目录中是否存在第三文件,第三文件的 文件名与第一文件的特征信息相同,第三文件与第二文件的在第二存储空间的存储地址相关联。
示例性地,信息处理模块1702用于确定第一文件的特征信息,包括:
根据第一文件的抽样数据,确定第一文件的特征信息;抽样数据是通过采样算法从第一文件的数据中获取的部分数据。
示例性地,文件查找装置1700还包括文件缓存模块1703,文件缓存模块1703用于在索引目录中不存在第三文件的情况下,将第一文件存储于第二存储空间,并在索引目录中增加第四文件,第四文件的文件名为第一文件的特征信息,第四文件与第一文件的存储地址相关联。
示例性地,信息处理模块1702还用于在索引目录中存在第三文件的情况下,将第一文件的链接标识与第二文件相关联,第一文件的链接标识用于获取第一文件;
文件缓存模块1703还用于从第一存储空间中删除第一文件。
本申请实施例提供的技术方案可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、终端设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DVD))、或者半导体介质等。在本申请实施例中,在无逻辑矛盾的前提下,各实施例之间可以相互引用,例如方法实施例之间的方法和/或术语可以相互引用,例如装置实施例之间的功能和/或术语可以相互引用,例如装置实施例和方法实施例之间的功能和/或术语可以相互引用。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (29)
- 一种文件去重方法,其特征在于,包括:获取写请求,所述写请求中包括第一文件;响应于所述写请求,存储所述第一文件,所述第一文件存储于第一存储空间;确定第二存储空间中是否存在第二文件,所述第二文件与所述第一文件相同,所述第二存储空间与所述第一存储空间位于存储系统的不同层。
- 根据权利要求1所述的方法,其特征在于,所述方法还包括:在不存在所述第二文件的情况下,将所述第一文件存储于第三存储空间,并在所述第三存储空间内对所述第一文件执行缓存区操作;执行完所述缓存区操作后,将所述第一文件存储于所述第二存储空间。
- 根据权利要求1所述的方法,其特征在于,所述方法还包括:在不存在所述第二文件的情况下,在所述第一存储空间内对所述第一文件执行缓存区操作;执行完所述缓存区操作后,将所述第一文件存储于所述第二存储空间。
- 根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:在存在第二文件的情况下,将所述第一文件的链接标识与所述第二文件相关联,所述第一文件的链接标识用于获取所述第一文件,从所述第一存储空间中删除所述第一文件。
- 根据权利要求1至3任一项所述的方法,其特征在于,所述第二文件与所述第一文件相同,包括:所述第二文件的特征信息与所述第一文件的特征信息相同。
- 根据权利要求5所述的方法,其特征在于,所述方法还包括:根据所述第一文件的抽样数据,确定所述第一文件的特征信息,所述抽样数据是通过采样算法从所述第一文件的数据中获取的部分数据。
- 根据权利要求4至6任一项所述的方法,其特征在于,所述确定第二存储空间中是否存在第二文件,包括:确定所述第一文件的特征信息;根据所述第一文件的特征信息,确定索引目录中是否存在第三文件,所述第三文件的文件名与所述第一文件的特征信息相同,所述第三文件与所述第二文件在所述第二存储空间中的存储地址相关联。
- 根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:生成提示信息,所述提示信息包括以下一种或多种:已删除重复文件的提示、删除重复文件所释放的存储容量、删除重复文件的数量、重复文件的文件类型。
- 根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:生成记录日志,所述记录日志包括以下一项或多项内容:所述索引目录中的数据、第一文件标识对应的存储位置、所述第一存储空间中的数据、删除重复文件所释放的存储容量、删除重复文件的数量、删除重复文件的文件类型。
- 根据权利要求1至7任一项所述的方法,其特征在于,所述获取写请求之前,所述方法还包括:获取指令,所述指令指示开启文件去重功能;响应于所述指令,执行获取写请求的操作。
- 一种文件查找方法,其特征在于,包括:获取第一文件,并确定所述第一文件的特征信息;根据所述第一文件的特征信息,确定索引目录中是否存在第三文件,所述第三文件的文件名与所述第一文件的特征信息相同,所述第三文件与第二文件的在第二存储空间的存储地址相关联。
- 根据权利要求11所述的方法,其特征在于,所述确定所述第一文件的特征信息,包括:根据所述第一文件的抽样数据,确定所述第一文件的特征信息;所述抽样数据是通过采样算法从所述第一文件的数据中获取的部分数据。
- 根据权利要求11或12所述的方法,其特征在于,所述方法还包括:在所述索引目录中不存在第三文件的情况下,将所述第一文件存储于所述第二存储空间,并在所述索引目录中增加第四文件,所述第四文件的文件名为所述第一文件的特征信息,所述第四文件与所述第一文件的存储地址相关联。
- 根据权利要求11或12所述的方法,其特征在于,所述方法还包括:在所述索引目录中存在第三文件的情况下,将所述第一文件的链接标识与所述第二文件相关联,所述第一文件的链接标识用于获取所述第一文件,从所述第一存储空间中删除所述第一文件。
- 一种文件去重装置,其特征在于,包括:文件操作模块,用于获取写请求,所述写请求中包括第一文件;文件缓存模块,用于响应于所述写请求,存储所述第一文件,所述第一文件存储于第一存储空间;信息处理模块,用于确定第二存储空间中是否存在第二文件,所述第二文件与所述第一文件相同,所述第二存储空间与所述第一存储空间位于存储系统的不同层。
- 根据权利要求15所述的装置,其特征在于,所述文件缓存模块还用于:在不存在所述第二文件的情况下,将所述第一文件存储于第三存储空间,并在所述第三存储空间内对所述第一文件执行缓存区操作;执行完所述缓存区操作后,将所述第一文件存储于所述第二存储空间。
- 根据权利要求15所述的装置,其特征在于,所述文件缓存模块还用于:在不存在所述第二文件的情况下,在所述第二存储空间内对所述第一文件执行缓存区操作;执行完所述缓存区操作后,将所述第一文件存储于所述第二存储空间。
- 根据权利要求15至17任一项所述的装置,其特征在于,所述信息处理模块还用于在存在第二文件的情况下,将所述第一文件的链接标识与所述第二文件相关联,所述第一文件的链接标识用于获取所述第一文件;所述文件缓存模块还用于从所述第一存储空间中删除所述第一文件。
- 根据权利要求15至17任一项所述的装置,其特征在于,所述信息处理模块还用于:根据所述第一文件的抽样数据,确定所述第一文件的特征信息;所述抽样数据是通过采样算法从所述第一文件的数据中获取的部分数据。
- 根据权利要求18或19所述的装置,其特征在于,所述信息处理模块还用于:确定所述第一文件的特征信息;根据所述第一文件的特征信息,确定索引目录中是否存在第三文件,所述第三文件的文件名与所述第一文件的特征信息相同,所述第三文件与所述第二文件在所述第二存储空间中 的存储地址相关联。
- 根据权利要求15至20任一项所述的装置,其特征在于,所述装置还包括生成模块所述生成模块用于生成提示信息,所述提示信息包括以下一种或多种:已删除重复文件的提示、删除重复文件所释放的存储容量、删除重复文件的数量、重复文件的文件类型。
- 根据权利要求15至20任一项所述的装置,其特征在于,所述生成模块还用于生成记录日志,所述记录日志包括以下一项或多项内容:所述索引目录中的数据、第一文件标识对应的存储位置、所述第一存储空间中的数据、删除重复文件所释放的存储容量、删除重复文件的数量、删除重复文件的文件类型。
- 一种文件查找装置,其特征在于,包括:文件操作模块,用于获取第一文件;信息处理模块,用于确定所述第一文件的特征信息;所述信息处理模块还用于根据所述第一文件的特征信息,确定索引目录中是否存在第三文件,所述第三文件的文件名与所述第一文件的特征信息相同,所述第三文件与第二文件的在第二存储空间的存储地址相关联。
- 根据权利要求23所述的装置,其特征在于,所述信息处理模块用于确定所述第一文件的特征信息,包括:根据所述第一文件的抽样数据,确定所述第一文件的特征信息;所述抽样数据是通过采样算法从所述第一文件的数据中获取的部分数据。
- 根据权利要求23或24所述的装置,其特征在于,所述装置还包括文件缓存模块,所述文件缓存模块用于在所述索引目录中不存在第三文件的情况下,将所述第一文件存储于所述第二存储空间,并在所述索引目录中增加第四文件,所述第四文件的文件名为所述第一文件的特征信息,所述第四文件与所述第一文件的存储地址相关联。
- 根据权利要求23或24所述的装置,其特征在于,所述信息处理模块还用于在所述索引目录中存在第三文件的情况下,将所述第一文件的链接标识与所述第二文件相关联,所述第一文件的链接标识用于获取所述第一文件;所述文件缓存模块还用于从所述第一存储空间中删除所述第一文件。
- 一种设备,其特征在于,所述设备包括一个或多个处理器和存储器;所述存储器与所述一个或多个处理器耦合,所述存储器存储有计算机程序,所述一个或多个处理器执行所述计算机程序时,所述设备执行如权利要求1至14任一项所述的方法。
- 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1至14任一项所述的方法。
- 一种计算机程序产品,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至14任一项所述的方法。
Publications (1)
Publication Number | Publication Date |
---|---|
CN118120212A true CN118120212A (zh) | 2024-05-31 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9734158B2 (en) | Searching and placeholders | |
JP6248182B2 (ja) | プレースホルダを用いるファイル管理 | |
CN112035410B (zh) | 日志存储方法、装置、节点设备及存储介质 | |
US10599336B2 (en) | Method of displaying content and electronic device adapted to the same | |
CN109416644B (zh) | 用于虚拟机实时迁移的系统和方法 | |
CN110018998B (zh) | 一种文件管理方法、系统及电子设备和存储介质 | |
JP5886447B2 (ja) | ロケーション非依存のファイル | |
CN109902255B (zh) | 页面混合浏览记录生成方法、装置、设备和存储介质 | |
KR20160003682A (ko) | 플레이스홀더에 의한 하이드레이션 및 디하이드레이션 기법 | |
CN106708825B (zh) | 一种数据文件处理方法及系统 | |
WO2011117465A1 (en) | Method and apparatus for portable index on a removable storage medium | |
CN110737682A (zh) | 一种缓存操作方法、装置、存储介质和电子设备 | |
CN114185494B (zh) | 内存匿名页的处理方法、电子设备及可读存储介质 | |
US10540415B2 (en) | Apparatus and method for managing history information in an electronic device | |
CN113495744A (zh) | 一种版本升级方法及相关装置 | |
CN108140039B (zh) | 流式传输来自并行批次的数据库访问的记录 | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
CN113934691B (zh) | 访问文件的方法、电子设备及可读存储介质 | |
CN115495020A (zh) | 文件处理方法、装置、电子设备和可读存储介质 | |
CN115113989B (zh) | 事务执行方法、装置、计算设备及存储介质 | |
CN118120212A (zh) | 一种文件去重方法、装置和设备 | |
WO2023070462A1 (zh) | 一种文件去重方法、装置和设备 | |
CN113805864A (zh) | 一种项目工程的生成方法、装置、电子设备及存储介质 | |
CN114265722A (zh) | 一种数据库的修复方法和电子设备 | |
CN116661645B (zh) | 显示应用卡片的方法、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |