CN111787074B - 一种文件同步方法及终端 - Google Patents

一种文件同步方法及终端 Download PDF

Info

Publication number
CN111787074B
CN111787074B CN202010560172.XA CN202010560172A CN111787074B CN 111787074 B CN111787074 B CN 111787074B CN 202010560172 A CN202010560172 A CN 202010560172A CN 111787074 B CN111787074 B CN 111787074B
Authority
CN
China
Prior art keywords
file
synchronized
block
terminal
hash value
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
Application number
CN202010560172.XA
Other languages
English (en)
Other versions
CN111787074A (zh
Inventor
陈建培
闻建霞
柳遵梁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Meichuang Technology Co ltd
Original Assignee
Hangzhou Meichuang Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Meichuang Technology Co ltd filed Critical Hangzhou Meichuang Technology Co ltd
Priority to CN202010560172.XA priority Critical patent/CN111787074B/zh
Publication of CN111787074A publication Critical patent/CN111787074A/zh
Application granted granted Critical
Publication of CN111787074B publication Critical patent/CN111787074B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种文件同步方法及终端,克服现有技术的在多个文件同步的时候无法做到使两端差异化最小的问题,本发明通过计算需要同步文件在两端的差异,优先同步差异大的文件,使同步异常时也能够达到两端差异最小化;在文件同步的处理过程中部分用到md5算法,具有很强的压缩性,容易计算,具有抗修改性,对原数据文件块进行任何改动得到的hash值区别都很大;具有强抗碰撞性;完成一个块同步后从待同步文件块列表中再获取一个待同步文件块信息,重复同步一个文件块的过程,直到所有待同步文件块全部同步完成,这种方法能够优先同步差异最大的文件。

Description

一种文件同步方法及终端
技术领域
本发明涉及通信技术领域,尤其涉及一种能够达到在同步异常时也能使两端差异最小化的文件同步方法及终端。
背景技术
文件同步是指两台或多台计算机之间通过网络连接,把一台或多台计算机上的文件内容同步到其他技术机,使文件内容在多台计算机之间保持一致。文件同步技术在多种场景下存在应用价值。例如网站的备份,将服务器上的网页文件通过文件同步技术同步到备份服务器上,在生产服务器网页文件丢失时从备份服务器同步网页文件到生产服务器以恢复网站。
通过对现有的文件同步技术研究发现。现有的文件同步方法在同步多个文件是的顺序有一下几种方法:1.按照需要同步文件的文件名排序;2.按照需要同步的文件大小排序;3.使用随机顺序;现有方法在同步多个文件没有全部完成的情况下无法做到需要同步的两端差异最小化。
例如,一种在中国专利文献上公开的“一种嵌入式设备配置文件同步比较的方法”,其公告号CN106469219A,包括以下步骤:S1、将配置文件中按逐行配置为最小单位,多行配置的合集形成数组块;S2、通过算法分析出数组块的最大相似块单元,也即最长公共序列:在一次最长公共序列查找中,通过特定算法将两个数组块的进行比较,对于相关或者相同的部分,在内部记录中给予标记,对于未被标记的数据块,则表示其数组块对应行的配置不同;S3、通过逐次递归分析出各个相同的配置行并标记,剩余未标记的部分导出为差异性数组块。尽管该方案将文件配置进行分组通过算法分析最大相似进行比较,但在同步多个文件没有全部完成的状态下,无法做到使两端差异最小化。
发明内容
本发明是为了克服现有技术的在多个文件同步的时候无法做到使两端差异化最小的问题,提供一种文件同步方法及终端,在同步异常时也能使两端差异最小化。
为了实现上述目的,本发明采用以下技术方案:
一种文件同步方法,包括以下步骤:
S1:制作待同步文件列表;
S2:从待同步文件列表中取出需要同步的文件名;
S3:对需要同步的文件在两端终端上根据块的大小使用哈希算法计算hash值;
S4:根据块的hash值制作待同步块文件列表;
S5:从待同步块文件列表中取出待同步块信息在本机终端与对端终端之间发送与接收;
S6:收到块内容回复后使用与S3中相同的哈希算法计算块内容的hash值;
S7:将待同步块信息中的hash值与回复块信息的hash值进行比较,若hash值相同则进入S8,若不同则返回S2;
S8:将回复块内容写入到文件,然后返回S2至所有待同步文件完成同步。
作为优选,所述S1包括以下步骤:
S11:将需要同步的文件的hash值记为h1;
S12:按照文件块的大小计算每个文件块的hash值并把每块的hash值进行异或运算,得到的值记为h2,文件块的大小为128k;
S13:将128位大小的h1与h2合并为一个256位的h3;
S14:将h3和h3对应的文件名发送到对端终端;
S15:收到对端终端发送的h3与本机终端计算得到的h3做异或运算结果记为h4;
S16:h4中不为0的bit位的数量再除以256结果记为p1;
S17:所有需要同步的文件按照同样的算法计算p1值,把所有p1值从大到小排序,剔除p1只为0的,得到各个p1对应的文件的列表,作为待同步文件列表。
作为优选,所述S3包括以下步骤:
S31:将需要同步的文件名对应到文件块;
S32:在两端终端上按照文件块的大小128k分块使用哈希算法计算hash值。
作为优选,所述哈希算法包括md5、sha1和sha256。md5 hash值大小是128位,sha1hash值大小是160位,sha256 hash值大小是256位。
作为优选,所述S4包括以下步骤:
S41:发送计算好的块hash值到对端终端;
S42:接收对端终端发送回的块的hash值与本机终端计算得到的hash做比较;
S43:剔除相同hash值的块,将hash值不同的块作为待同步块文件列表。
作为优选,所述S5包括以下步骤:
S51:从待同步文件块列表中按批大小128k取出待同步块信息,并异步发送获取文件块请求到对端终端;
S52:对端终端收到获取文件块请求后从文件中读取对应块号的文件块内容,并将文件块内容回复给请求端。
作为优选,所述S5之间发送方式为异步发送。
作为优选,所述方法通过终端之间执行命令来实现,所述命令包括文件备份、文件块的中间计算、文件同步和强制更新。
一种文件同步终端,所述终端包括本机终端和对端终端,所述终端采用一种文件同步方法,终端包括存储模块和处理器,存储模块用于存储发送和接收的文件信息,处理器用于对待同步的文件信息进行处理。
作为优选,所述终端包括计算机软件和电子硬件。
因此,本发明具有如下有益效果:
1.本发明通过计算需要同步文件在两端的差异,优先同步差异大的文件,使同步异常时也能够达到两端差异最小化;
2.在文件同步的处理过程中部分用到md5算法,具有很强的压缩性,任意长度的块,算出的hash值长度都是固定的;容易计算,从原数据计算出hash值很容易;抗修改性,对原数据文件块进行任何改动得到的hash值区别都很大;强抗碰撞性;
3. 完成一个块同步后从待同步文件块列表中再获取一个待同步文件块信息,重复同步一个文件块的过程,直到所有待同步文件块全部同步完成,这种方法能够优先同步差异最大的文件。
附图说明
图1是本发明的流程图。
具体实施方式
下面结合附图与具体实施方式对本发明做进一步的描述。
实施例1:
本实施例提供一种文件同步方法,如图1所示,具体包括以下步骤:
S1:制作待同步文件列表;
S2:从待同步文件列表中取出需要同步的文件名;
S3:对需要同步的文件在两端终端上根据块的大小使用哈希算法计算hash值;
S4:根据块的hash值制作待同步块文件列表;
S5:从待同步块文件列表中取出待同步块信息在本机终端与对端终端之间发送与接收;
S6:收到块内容回复后使用与S3中相同的哈希算法计算块内容的hash值;
S7:将待同步块信息中的hash值与回复块信息的hash值进行比较,若hash值相同则进入S8,若不同则返回S2;
S8:将回复块内容写入到文件,然后返回S2至所有待同步文件完成同步。
实施例2:
本实施例提供一种文件同步方法,如图1所示,具体包括以下步骤:
S1:制作待同步文件列表;
其中, S1包括以下步骤:
S11:将需要同步的文件的hash值记为h1;
S12:按照文件块的大小计算每个文件块的hash值并把每块的hash值进行异或运算,得到的值记为h2,文件块的大小为128k;
S13:将128位大小的h1与h2合并为一个256位的h3;
S14:将h3和h3对应的文件名发送到对端终端;
S15:收到对端终端发送的h3与本机终端计算得到的h3做异或运算结果记为h4;
S16:h4中不为0的bit位的数量再除以256结果记为p1;
S17:所有需要同步的文件按照同样的算法计算p1值,把所有p1值从大到小排序,剔除p1只为0的,得到各个p1对应的文件的列表,作为待同步文件列表。
S2:从待同步文件列表中取出需要同步的文件名。
S3:对需要同步的文件在两端终端上根据块的大小使用哈希算法计算hash值。
其中,S3包括以下步骤:
S31:将需要同步的文件名对应到文件块;
S32:在两端终端上按照文件块的大小128k分块使用哈希算法计算hash值。
其中,本实施例中的哈希算法采用md5,在实际应用中选取的文件块大小是128k。
S4:根据块的hash值制作待同步块文件列表。
其中,S4包括以下步骤:
S41:发送计算好的块hash值到对端终端;
S42:接收对端终端发送回的块的hash值与本机终端计算得到的hash做比较;
S43:剔除相同hash值的块,将hash值不同的块作为待同步块文件列表。
S5:从待同步块文件列表中取出待同步块信息在本机终端与对端终端之间发送与接收。
其中,S5包括以下步骤:
S51:从待同步文件块列表中按批大小128k取出待同步块信息,并异步发送获取文件块请求到对端终端;
S52:对端终端收到获取文件块请求后从文件中读取对应块号的文件块内容,并将文件块内容回复给请求端。
S6:收到块内容回复后使用与S3中相同的哈希算法计算块内容的hash值。
S7:将待同步块信息中的hash值与回复块信息的hash值进行比较,若hash值相同则进入S8,若不同则返回S2。
S8:将回复块内容写入到文件,然后返回S2至所有待同步文件完成同步。
本方法通过终端之间执行命令来实现,命令包括文件备份、文件块的中间计算、文件同步和强制更新。
本发明还相应的提供一种文件同步终端,所述终端包括本机终端和对端终端,所述终端采用一种文件同步方法,终端包括存储模块和处理器,存储模块用于存储发送和接收的文件信息,处理器用于对待同步的文件信息进行处理。
所述终端包括计算机软件和电子硬件,上述本发明的方法,为纯软件架构,可以透过程序代码布设于实体媒体,如硬盘、光盘片、或是任何电子装置或硬件或软件实现,当终端加载程序代码且执行,终端成为用以实行本发明的载体。
本发明的工作原理如下:本发明通过计算需要同步文件在两端的差异,优先同步差异大的文件,使同步异常时也能够达到两端差异最小化;在文件同步的处理过程中部分用到md5算法,具有很强的压缩性,任意长度的块,算出的hash值长度都是固定的;容易计算,从原数据计算出hash值很容易;抗修改性,对原数据文件块进行任何改动得到的hash值区别都很大;强抗碰撞性;完成一个块同步后从待同步文件块列表中再获取一个待同步文件块信息,重复同步一个文件块的过程,直到所有待同步文件块全部同步完成,这种方法能够优先同步差异最大的文件。
上述实施例对本发明的具体描述,只用于对本发明进行进一步说明,不能理解为对本发明保护范围的限定,本领域的技术工程师根据上述发明的内容对本发明作出一些非本质的改进和调整均落入本发明的保护范围内。

Claims (9)

1.一种文件同步方法,其特征是,包括以下步骤:
S1:制作待同步文件列表;
S2:从待同步文件列表中取出需要同步的文件名;
S3:对需要同步的文件在两端终端上根据块的大小使用哈希算法计算hash值;
S4:根据块的hash值制作待同步块文件列表;
S5:从待同步块文件列表中取出待同步块信息在本机终端与对端终端之间发送与接收;
S6:收到块内容回复后使用与S3中相同的哈希算法计算块内容的hash值;
S7:将待同步块信息中的hash值与回复块信息的hash值进行比较,若hash值相同则进入S8,若不同则返回S2;
S8:将回复块内容写入到文件,然后返回S2至所有待同步文件完成同步;
所述S1包括以下步骤:
S11:将需要同步的文件的hash值记为h1;
S12:按照文件块的大小计算每个文件块的hash值并把每块的hash值进行异或运算,得到的值记为h2,文件块的大小为128k;
S13:将128位大小的h1与h2合并为一个256位的h3;
S14:将h3和h3对应的文件名发送到对端终端;
S15:收到对端终端发送的h3与本机终端计算得到的h3做异或运算结果记为h4;
S16:h4中不为0的bit位的数量再除以256结果记为p1;
S17:所有需要同步的文件按照同样的算法计算p1值,把所有p1值从大到小排序,剔除p1只为0的,得到各个p1对应的文件的列表,作为待同步文件列表。
2.根据权利要求1所述的一种文件同步方法,其特征是,所述S3包括以下步骤:
S31:将需要同步的文件名对应到文件块;
S32:在两端终端上按照文件块的大小128k分块使用哈希算法计算hash值。
3.根据权利要求1或2所述的一种文件同步方法,其特征是,所述哈希算法包括md5、sha1和sha256。
4.根据权利要求1所述的一种文件同步方法,其特征是,所述S4包括以下步骤:
S41:发送计算好的块hash值到对端终端;
S42:接收对端终端发送回的块的hash值与本机终端计算得到的hash做比较;
S43:剔除相同hash值的块,将hash值不同的块作为待同步块文件列表。
5.根据权利要求1所述的一种文件同步方法,其特征是,所述S5包括以下步骤:
S51:从待同步文件块列表中按批大小128k取出待同步块信息,并异步发送获取文件块请求到对端终端;
S52:对端终端收到获取文件块请求后从文件中读取对应块号的文件块内容,并将文件块内容回复给请求端。
6.根据权利要求1所述的一种文件同步方法,其特征是,所述S5之间发送方式为异步发送。
7.根据权利要求1所述的一种文件同步方法,其特征是,所述方法通过终端之间执行命令来实现,所述命令包括文件备份、文件块的中间计算、文件同步和强制更新。
8.一种文件同步终端,所述终端包括本机终端和对端终端,其特征是,所述终端采用权利要求1-6任意一项所述的文件同步方法,终端包括存储模块和处理器,存储模块用于存储发送和接收的文件信息,处理器用于对待同步的文件信息进行处理。
9.根据权利要求8所述的一种文件同步终端,其特征是,所述终端包括计算机软件和电子硬件。
CN202010560172.XA 2020-06-18 2020-06-18 一种文件同步方法及终端 Active CN111787074B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010560172.XA CN111787074B (zh) 2020-06-18 2020-06-18 一种文件同步方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010560172.XA CN111787074B (zh) 2020-06-18 2020-06-18 一种文件同步方法及终端

Publications (2)

Publication Number Publication Date
CN111787074A CN111787074A (zh) 2020-10-16
CN111787074B true CN111787074B (zh) 2023-04-21

Family

ID=72757281

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010560172.XA Active CN111787074B (zh) 2020-06-18 2020-06-18 一种文件同步方法及终端

Country Status (1)

Country Link
CN (1) CN111787074B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114385747A (zh) * 2021-09-22 2022-04-22 国家电网有限公司 移动互联网快速数据同步方法
CN117112508B (zh) * 2023-10-20 2024-02-06 杭州美创科技股份有限公司 基于序号的文件同步方法、装置、计算机设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011170667A (ja) * 2010-02-19 2011-09-01 Nec Corp ファイル同期システム、ファイル同期方法およびファイル同期プログラム
CN102915325A (zh) * 2012-08-11 2013-02-06 深圳市极限网络科技有限公司 基于md5哈希列表的文件分解与组合技术
CN103220358A (zh) * 2013-04-19 2013-07-24 李晶 一种多终端在线文件同步方法、系统、服务器及终端设备
CN103838645A (zh) * 2014-01-02 2014-06-04 上海爱数软件有限公司 一种基于哈希的远程差异合成备份实现方法
CN104008116A (zh) * 2013-02-27 2014-08-27 联想(北京)有限公司 一种文件同步方法及电子设备
CN107480267A (zh) * 2017-08-17 2017-12-15 无锡清华信息科学与技术国家实验室物联网技术中心 一种利用局部性提高文件差分同步速度的方法
CN111241047A (zh) * 2020-04-26 2020-06-05 北京信安世纪科技股份有限公司 一种文件同步方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101960339B1 (ko) * 2014-10-21 2019-03-20 삼성에스디에스 주식회사 파일 동기화 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011170667A (ja) * 2010-02-19 2011-09-01 Nec Corp ファイル同期システム、ファイル同期方法およびファイル同期プログラム
CN102915325A (zh) * 2012-08-11 2013-02-06 深圳市极限网络科技有限公司 基于md5哈希列表的文件分解与组合技术
CN104008116A (zh) * 2013-02-27 2014-08-27 联想(北京)有限公司 一种文件同步方法及电子设备
CN103220358A (zh) * 2013-04-19 2013-07-24 李晶 一种多终端在线文件同步方法、系统、服务器及终端设备
CN103838645A (zh) * 2014-01-02 2014-06-04 上海爱数软件有限公司 一种基于哈希的远程差异合成备份实现方法
CN107480267A (zh) * 2017-08-17 2017-12-15 无锡清华信息科学与技术国家实验室物联网技术中心 一种利用局部性提高文件差分同步速度的方法
CN111241047A (zh) * 2020-04-26 2020-06-05 北京信安世纪科技股份有限公司 一种文件同步方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"云环境下文件同步研究与应用";石鸿超;《中国优秀硕士学位论文全文数据库 信息科技辑》;20181215;全文 *

Also Published As

Publication number Publication date
CN111787074A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
CN109542979B (zh) 一种区块链系统快速同步及简精数据存储的方式
EP3767483B1 (en) Method, device, system, and server for image retrieval, and storage medium
US10969971B2 (en) Data storage method and apparatus
CN106874348B (zh) 文件存储和索引方法、装置及读取文件的方法
CN111787074B (zh) 一种文件同步方法及终端
US10579644B2 (en) Record property synchronization in a network computing system
CN113420036A (zh) 一种电网监控系统内存库关系库一致性校验方法
CN110442439B (zh) 任务进程处理方法、装置和计算机设备
CN112559546B (zh) 数据库同步方法、装置、计算机设备及可读存储介质
JP6233846B2 (ja) 可変長ノンスの生成
CN111290700A (zh) 分布式数据读写方法和系统
CN109616156B (zh) 一种基因测序数据存储方法和装置
CN108241640B (zh) 一种分布式的文件存储方法
CN111309689A (zh) 文件查重方法及装置
CN110647578A (zh) 页面信息同步显示的方法、装置、计算机设备和存储介质
CN112988905B (zh) 用于集群部署的节点内存同步方法及装置
CN114866594B (zh) 设备连接管理方法、装置、系统、服务器及可读存储介质
CN112711608B (zh) 数据展示方法、装置、计算机可读存储介质和计算机设备
KR100319761B1 (ko) 시그니처 파일을 이용한 데이터베이스 검색시스템에서의프레임 분할 병렬 처리 방법
CN116431647A (zh) 一种数据处理方法、存储介质与设备
CN108280048B (zh) 信息处理方法和装置
CN116166739A (zh) 用于实时同步数据的方法、装置、电子设备及存储介质
CN115292338A (zh) 数据更新方法及数据更新系统
CN113886341A (zh) 基于分布式文件系统的相似文件查找方法、系统及装置
CN112306958A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 310000 Rooms 103-27, Building 19, No. 1399, Liangmu Road, Cangqian Street, Yuhang District, Hangzhou, Zhejiang

Applicant after: Hangzhou Meichuang Technology Co.,Ltd.

Address before: 12 / F, building 7, Tianxing International Center, 508 Fengtan Road, Gongshu District, Hangzhou City, Zhejiang Province 310011

Applicant before: HANGZHOU MEICHUANG TECHNOLOGY CO.,LTD.

GR01 Patent grant
GR01 Patent grant