一种分布式文件备份方法和系统的制作方法_2

文档序号:8543594阅读:来源:国知局
[0045]该保存方式是计算哈希后,使用哈希值的前两个字符做为文件夹名,在仓库的objs目录下创建文件夹,使用哈希值的剩余字符做为文件名在创建的文件夹下建立普通文件,使用该文件保存对象的数据。
[0046]假设仓库的目录是E: \repo:,每个对象以普通文件保存在仓库子目录objs (E: \repo\objs)下,保存的文件名根据哈希值被分为两段。例如哈希值是ea8a67c60fec094221edfc5e32f6f5b038d06a55,则对象数据被保存在:
[0047]E: \repo\obJ's\ea\8a67c60fec094221edfc5e32f6f5b038d06a55 中。
[0048]3.条目:条目是一个文件或目录的完整信息,是一个字符串,在目录文件和数据库中使用,条目包括件哈希值、文件类型、属性、修改日期和文件名五部分,以空格分开,具体说明如下:
[0049]I).条目的类型包括reg:普通文件和dir:目录文件两种;
[0050]2).文件权限属性,由四个8进制数组成:
[0051]第I个数:保留,永远是O;
[0052]第2个数:所有者的读、写和执行权限;
[0053]第3个数:同组用户的读、写和执行权限;
[0054]第4个数:其它用户的读、写和执行权限;
[0055]3).保存文件内容对象的哈希值;
[0056]4).文件最后修改时间,自1970年I月I日起的秒数;
[0057]5).文件名。
[0058]例如按照下述格式保存的条目:
[0059]〃reg 0644ea8a67c60fec094221edfc5e32f6f5b038d06a551423123424abc.txt〃 ;
[0060]表示一个名为abc.txt的普通文件。
[0061]4.目录对象:它的内容是一个包括若干个条目的文件,其中每行是一个条目,例如:
[0062]〃reg 0644ea8a67c60fec094221edfc5e32f6f5b038d06a551423523234abc.txt\n〃 ;
[0063]"dir 0666c222cae2ba7daeblcb26d67e356525c9f4fc93f31423423424test\n// ;
[0064]〃reg 064442addaf0c297fc059c9bc3143c75fe47f868ddal2135135423wp.xls\n〃 ;
[0065]上述目录对象表示该目录有两个普通文件abc.txt和wp.xls以及一个子目录test,
[0066]而test子目录的内容则需要打开哈希值为:
[0067]c222cae2ba7daeblcb26d67e356525c9f4fc93f3 的对象,至于本目录的目录名等信息,则由其他条目来说明。
[0068]5.备份数据库:使用sqlite3等数据库,保存每一次备份的根信息,每一条对应一个备份记录,包括员工号、当前时间、备份路径和条目,具体说明如下:
[0069]I).员工号:这个备份是属于哪个员工的;
[0070]2).备份路径:备份的文件或目录的绝对路径;
[0071]3).备份时间:这个备份产生的时间;
[0072]4).文件条目:文件或目录的条目。
[0073]6.网络客户端:用来与其他网络客户端进行网络通信,主要完成以下功能:
[0074]a、认证:只有同一公司的电脑才能通过认证,进而才能完成其它功能。参见图7的网络客户端认证过程图,具体的认证流程为:
[0075]I)本地生成一个128位随机数,发送至网络客户端;
[0076]2).网络客户端使用许可证中的密钥加密该随机数,得出另一个128位数字,并将结果发回本地。
[0077]3).本地验证返回的数字,通过则继续第4步,不通过即认证失败,关闭连接。
[0078]4).网络客户端发送一个128位随机数到本地。
[0079]5).本地使用许可证中的密钥加密该随机数,将加密后的128位数字发加网络客户端。
[0080]6).网络客户端验证返回的数字,通过则认证完成,不通过即认证失败,关闭连接。
[0081]其中,前三步本地验证远程,后三步过程验证本地。
[0082]b、获取对方网络客户端的信息,如对方的员工号;
[0083]C、操作对方网络客户端的仓库,在备份时将本地仓库中的备份保存到对方的仓库,以及在恢复时读取对方仓库的备份。
[0084]本发明提供的一种文件的分布式备份方法,具体按照以下步骤实施:
[0085]1.文件的本地备份方法,参见图2文件的本地备份流程图,初始参数为要备份的绝对路径,具体按照以下步骤实施:
[0086]1.1)判断要备份的路径是普通文件还是目录文件,如果是普通文件则转至第1.2步,如果是目录文件则跳至第1.3步;
[0087]1.2)将普通文件内容保存为对象,得到对象哈希值,转至第1.6步;
[0088]1.3)依次对目录下的所有普通文件和目录文件递归调用该文件的本地备份方法,具体为调用步骤1.1至步骤1.6,其参数为子文件或子目录的绝对路径,得到每个普通文件和目录文件对应的条目;
[0089]1.4)如果得到多个条目,则将所有条目合并为一个多行文本;如果本目录是空目录,则得到一个空文件;如果只有一个子文件或子目录,则得到一个单行文本;
[0090]1.5)将步骤1.4中得到的文本保存为一个对象,得到文本的哈希值;
[0091]1.6)将得到的哈希值与文件类型、属性、修改日期、文件名合成一个条目并返回。
[0092]其中,数据内容的保存方法如图4的数据内容保存方法流程图所示,其具体过程是:
[0093]I).计算要保存对象的哈希值;
[0094]2).根据哈希值计算保存路径;
[0095]3).该路径的对象文件是否存在,如果已经存在,不用再保存,转第5)步;
[0096]4).将对象文件保存到计算出来的路径;
[0097]5).返回计算出的对象哈希值。
[0098]2.使用当前员工号、当前时间、备份路径和步骤1.6中得到的条目向备份数据库同步插入一条备份记录。
[0099]3.条目的网络复制方法,参见图3条目的网络复制流程图,初始参数为步骤2备份记录中的条目,具体按照以下步骤实施:
[0100]3.1)解析条目,逐一解析步骤2中备份记录的条目,判断条目是文件还是目录,如果是目录则转至第3.2步,如果是文件则转至第3.4步;
[0101]3.2)读取条目中哈希值对应的对象,读取解析对象中的所有条目;
[0102]3.3)对于解析到的每一个条目,递归调用所述条目的网络复制方法,即调用步骤3.1至步骤3.4,其参数为解析到的条目,复制所有的子条目到网络客户端;
[0103]3.4)将条目中哈希值对应的对象复制到网络客户端。
[0104]4.将上述步骤2中得到的一个备份记录复制到网络客户端上,即完成文件的备份。
[0105]二、本发明中文件的恢复方法为:参见图5的网络恢复原理图,在接收到恢复指令,即文件的原始路径和指定的恢复路径后,在本地电脑和所有网络客户端查找指定的原始路径的所有备份记录,将备份记录中记载的路径与原始路径作对比,对比成功后获取对应的条目;再将该条目恢复到本地电脑。如果一个备份在本地和其他网络客户端上同时存在,则优先使用本地备份;在所有找到的备份中根据备份时间
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1