联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> CS作业CS作业

日期:2018-04-27 10:25


这个项目是为了创建一个文件同步器。

1.1介绍

许多计算机用户希望从不同的机器上访问他们的文件,最方便的方法是使用单一的文件系统,这个文件系统通过网络上的多台机器安装。机器在不同的网络时,系统共享的文件不能轻易被使用。举个例子,一个用户在两台机器(携带式和台式)上拥有相同的文件,当一个携带式机器上的文件被更改时,而它此时并没有接到网络中,那么它必须手动将新版本复制到系统中(这个系统只含有旧版本的文件),当文件分别在这两个系统中被更改时,这个操作会变得复杂而且会产生许多错误。

文件同步软件是一种自动生成两个相同的文件树,尽可能产生符合用户预期的结果。这个项目的目标就是写一个这样的软件。

1.2 功能

同步器的目的是尽可能接近树a和树b相同的状态,即如果文件是p的A(记为p/A)则存在p的B(记为p /b)也存在并且相同(数据和元数据),反之亦然。我们指的是元数据的类型,文件p的权限,文件p的大小,以及文件p的最后修改日期。

一般来说,如果一个文件在两边都被修改了,那它不可能达到完全同步,我们会说这两个版本间的文件存在冲突。文件同步器处理两个文件树,我们将调用A和B,以及包含该文件的上次成功同步日志,该文件同步日志储存在 $home/.synchro ,包含路径A和路径B;另外,对于每个文件 p/A =p/B , 已经同步而没有冲突的,日志文件包含它的路径,它的文件类型和权限,p的大小和最后一次修改日期。

我们说,当日志文件中有p的条目,且文件p/A (或p/B)有着相同的模式,大小和最后修改的日期(日志中存储的那些),那么文件p/A (或p/B)是符合日志的


1.3 简单同步

同步器并行运行两个树A和B,对于所有p文件,它执行以下操作:

-如果p/A 是一个目录而p/B 是一个普通文件,那么存在冲突。

-否则,如果p/A 和p/B 都是目录,则它会下降递归。

-否则,如果p/A 和p/B 是两个普通文件并且有着相同的模式,大小,和修改日期,那么同步成功,那么什么事都不用做。

-否则,如果如果p/A 与日志文件一致且p/B与日志文件不一致,后一个已经改变,需要把p/B的所有信息复制到p/A上,

相反,如果是p/B 与日志文件一致而p/A与日志文件不一致,则把p/A的所有信息复制到p/B 上去。

-最后,如果p/A 和p/B 都是普通文件,而且它们两个都不符合日志文件(也许是因为日志文件没有p 的入口, 也许是因为它和两个文件的元数据不匹配) 那么存在冲突。

同步器之后会用所有成功同步的普通文件的数据重写日志文件。

有必要注意:这两个树中文件顺序不一定一致,A可能包含文件p和q,B可能包含文件q和p,由您来决定如何处理冲突。我们可以只需显示一次冲突列表。我们可以要求用户做出选择,如果这些文件是文本文件,我们可以显示这两个文件的差异(举个例子,使用命令diff)


1.4包含内容比较的同步器

如果一个文件在两边都有着相同的修改,那么上面的同步器会存在误导性冲突。在两个普通文件存在冲突时,包含内容比较的同步器会进一步深究,比较这两个文件的内容,看看它们是否真的存在冲突。

-如果两个文件的元数据也相同,那么没什么可做的,同步成功了;

-如果两个文件中一个文件的元数据和储存在日志里的相同,那么是另一个文件的元数据改变了,那么只需更改第一个文件的元数据即可,同步也成功。

-如果两个文件的元数据不同,这两个文件是冲突的,但仅限于元数据。它们也许有用,这需要让用户知道;

当然,在上面任意一种同步成功的情况时,需要将结果存储到日志文件中。


2.扩展

有关的扩展全部欢迎。例如,我们能够想到管理符号链接 (用户可以取消引用或同步链接本身)

用户界面由您自行决定。特别地,在冲突发生时,我们可以考虑实现一个用户友好界面。例如,提出是否启动计算差异的工具。(txt文件)我们也可以考虑如何处理可能出现的危机情况:在同步期间树A和树B发生改变。

3.详情

为了简化这个项目的实现,同步器将仅被开发来执行同一个机器的2个文件系统的同步。


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp