免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3734 | 回复: 16
打印 上一主题 下一主题

[学习共享] (重发)创建同步器 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2013-02-07 23:26 |只看该作者
本帖最后由 Monsieur_deng 于 2013-02-13 13:33 编辑

1介绍
许多计算机用户都希望从不同的机器访问他们的文件。最方便的方法是使用一个单一的文件系统,安装由几台机器在整个网络。是不容易当机没有连接到网络共享的文件系统。例如,一个用户拥有自己的桌面电脑和笔记本电脑上的相同文件。当一个文件被改变的笔记本电脑上,它是从网络上断开时,必须手动复制到新的版本只包含前的文件系统,文件上都发生了变化时,文件系统,这种操作变得更加复杂,是许多错误的来源。
软件文件同步软件,使两棵树相同的文件自动生成尽可能多的结果与用户的期望相一致。这个项目的目标是编写这样的软件。
在市场上有非常完整的文件同步。
2功能
有两树A B相同,如果A的文件p(记做p/A)存在,则B的文件p(记做p/B)也存在且相同(内容,属性,type,文件p得许可,文件p的大小,和p的最后修改时间),当一个文件两边都被修改,则不能同步,有冲突。文件同步器操作两个树文件A B,和一个包含了最后成功同步的日志文件,日志文件储存在例如$HOME/.synchro,包含A B的路径,此外,为了每个文件p/A=p/B同步无冲突,日志文件还包含了路径p ,type,文件p得许可,文件p的大小,和p的最后修改时间。我们说当在日志文件中存在一个p的入口时,文件p/A遵循日志,且文件p/A与日志中存贮的有相同的模式大小,最后修改时间

1.简单同步器设计要求

我们需要设计一个同步器能够浏览两棵平行树A和B。对于任何的p文件,它可以依次判断并执行以下操作:

(1)如果p/A是目录文件,而p/B是普通文件,或反之,则存在冲突。

(2)如果p/A和p/B都是目录文件,则递归下降。

(3)如果p/A和p/B具有相同的类型、大小和最后修改日期的普通文件,那么同步成功,不做修改。

(4)如果p/A的日志文件和p/B不一致,即p/A已改变,则要用p/A的内容、类型、最后修改日期覆盖p/B;反之亦然。

(5)最后,如果p/A和p/B都是普通文件,且都与日志文件不一致(因为p没有进入路径,这是因为它与两个文件不匹配),则存在冲突。

同步器重写带有常规文件数据的日志文件时,能够与数据的常规文件同步。

需要注意两棵树在文件系统中可能有不同的顺序,它可能在是A中是p和q的顺序,而在B中是q和p。

为了处理这种冲突,需要简单地列出同步器一次工作后出现的冲突列表,并要求用户做出选择。如果这些文件是文本文件,则可以查看这两个文件之间的差异(例如,通过执行diff命令)。

2.比较内容的同步器

如果文件在两侧以同样的方式被修改,按照上述操作同步器会误判为冲突。此时,同步器应对两个文件中的内容进行比较;如果他们是相同的,则

(1)如果这两个文件的元数据也是相同的,那么无需修改,同步成功;

(2)如果两个文件中的一个文件的元数据与存储在日志上的元数据是相同的,这那么判断为另一个文件的元数据发生改变,我们要修改前者(与日志一致的那个文件)的数据,以保证同步成功;

(3)如果元数据不同,这两个文件发生冲突,但只在元数据上发生,我们需要通过询问用户来更改。

当然,上述任一操作完成后,其结果都要存储在日志文件中。

3.其他要求

可以对同步器作相关操作完善。例如:处理符号链接(用户可以选择链接本身或取消链接)。

用户界面可自行设计。尤其是,我们可以认为实现一个用户接口,在发生冲突的情况下,推出的差异计算工具。

我们也可以设想如何处理可能出现的情况,如在同步过程中树A和树B同时发生更改。
为了简化此项目,同步器仅比较同一个电脑上的两个文件系统。

与附件略有区别

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
2 [报告]
发表于 2013-02-08 01:14 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
3 [报告]
发表于 2013-02-08 12:40 |只看该作者
回复 3# zooyo


    1000$也可以考虑嘛

论坛徽章:
0
4 [报告]
发表于 2013-02-08 12:44 |只看该作者
回复 3# zooyo


   没办法咧!说要是给报酬,这边大神估计都看不上诶.....
   我们也只是shell入门,就要我们寒假完成这东西....
   来论坛凑凑运气呗,好歹许多基础知识还是在这看的....

论坛徽章:
0
5 [报告]
发表于 2013-02-08 12:51 |只看该作者
回复 4# Shell_HAT


    哥....虽然重赏之下必有勇士....但最主要还是能自我挑战嘿!

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
6 [报告]
发表于 2013-02-08 13:46 来自手机 |只看该作者
公司的项目?层层外包?
看这需求,我是懒得找虐。

论坛徽章:
0
7 [报告]
发表于 2013-02-08 13:52 |只看该作者
回复 7# 惟吾无为


    不是...都想的复杂了...我们学生党...
    我们大致学了些shell的基础指令,以及一些grep,sed,awk指令....
    这份东西还是翻译出来的....就这样....

论坛徽章:
1
2015亚冠之西悉尼流浪者
日期:2015-05-28 16:30:37
8 [报告]
发表于 2013-02-08 14:19 |只看该作者
本帖最后由 tank064 于 2013-02-08 14:20 编辑

这个,大过年的,没谁来自虐吧,哈哈!!

论坛徽章:
0
9 [报告]
发表于 2013-02-08 15:09 |只看该作者
shell里面调个rsync

论坛徽章:
0
10 [报告]
发表于 2013-02-08 15:16 |只看该作者
回复 10# lyreopera


    这个东西没学...而且貌似是让我们用已有的知识来,实现这个功能...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP