摘要

本文分析了文件夹之间进行一对一同步所涉及的概念,并根据这一概念,分析出实现文件夹之间同步背后的模型,以及遇到的问题。本文最后还对文件夹之间一对多的特殊情况进行分析。

概念

所谓文件夹同步,就是通过同步操作,将两个文件夹中的内容保持一致,即所包含的文件和文件夹(如无特殊说明,下文中用文件指代文件和文件夹)的内容是一样的。此处的文件夹指代的是广义的文件夹,可以是本地,也可以是远程。

文件夹同步类型包括:一次性同步、实时修改同步。

一次性同步是指,执行一次同步后,两个文件夹中的内容即一致。同步后,又修改。若想再次保持一致,则必须再次执行一次性同步。

实时修改同步则指的是,文件夹处于监控状态中,可即使获知文件夹内某个文件或文件夹的修改,此时仅需要针对修改的文件进行同步。Windows平台和Linux平台都支持文件修改的实时监控。网络文件夹的监控则需要网络协议的支持。

真正的文件夹同步操作,往往是两者的结合。

思路

若将每个文件或文件夹看成一个元素,那么同步文件夹内的文件和文件夹就组成了一个集合,如下图所示的A。所谓文件夹同步,就是将集合A和集合B根据某种规则变成同一个集合C。

为了得到这种规则,需要将集合的模型细化。考虑集合A->C的情况,如下图所示。当集合A中的文件转化集合C时,文件可以分三部分:第一部分是集合D,只作了文件的修改(内容或属性的修改,文件位置的移动)。第二部分是集合A-D:删除的文件。第三部分是集合C-D:新增的文件。

由此,我们可以得到文件的修改类型:新建,更新,改名(包含文件名称的修改和文件位置的移动),删除。

现在考虑下A、B两边同时修改的情况:

1)A未修改,B未修改:不同步。

2)A修改,B未修改:集合B需要参考A的当前状态进行修改。

3)A未修改,B修改:集合A需要参考B的当前状态进行修改。

4)A修改,B修改:如果两边的修改时相对独立的,就可以互相参考着同步。若对同一文件,两边都有修改,需要考虑冲突情况处理。一端文件可能的修改有四种情况,此时需要查看另一端的状态,需要增加两种(无和不存在)。冲突的处理中,最复杂的就是两边同时改名文件夹时的情况。但是无论怎么处理,都应该保证文件数据不丢失。

对整个集合之间的同步操作属于一次性同步。若是实时修改同步,实际上就是对集合中某个文件进行的同步,所采用的规则是一样的。

一对多同步

所谓一对多同步,就是指一个文件夹,有多个文件夹与之同步,且要保证所有文件夹之间的文件是一样的。此场景出现在当前比较火的云盘同步上。在这种情况下,我们将一个文件夹称之为服务端,多个文件夹称之为客户端。此时,又会增加一些问题:

1)当多个客户端操作单个文件的时候,需要在服务端对此文件进行互斥操作。

2)应该在服务端增加类似于SVN的文件版本记录功能,以防止用户数据的丢失。此时,可以根据需要,记录下文件修改的一些附属信息,比如:修改时间、修改的客户端名称等。

后语

本系列后续文章,将根据本文,详细介绍文件夹同步中的一些细节,请持续关注。

关于文件夹同步的那点事相关推荐

  1. linux 文件夹同步工具

    背景: 这篇文放到一群共享里,网上被摘抄了一下,但未注明出处.这里申明一下,摘抄可以,但请注明出处.同样,也是未完之作. 几种文件夹同步工具介绍 1 前言 我们日常工作中,经常会遇到下面的一些情况:静 ...

  2. window如何传文件到mac_如何将Mac桌面和文档文件夹同步到iCloud

    是否想确保您始终可以访问重要文件?这是将两个关键的macOS目录同步到iCloud的方法. 是否在寻找一种释放Mac上存储空间的方法?也许您想了解如何从其他设备访问Mac文档?您可以通过将Mac上的D ...

  3. 三款免费实用的文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance)

    三款免费实用的本地文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance) Microsoft SyncToy SyncToy 是由 微软 推出的一款免费 ...

  4. 服务器文件夹同步到手机,本机文件夹同步到云服务器

    本机文件夹同步到云服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 本节操 ...

  5. 和 远程文件夹同步_云同步实操(2)安卓端同步文件夹2

    接着第一更 首先在侧边栏找到同步文件夹 作用就是创建要同步哪一路径的文件夹 点进去后点右下角加号 名称自己写,账户类型选择坚果云,同步就会把手机内存里的文件夹同步到SD卡上 远程文件夹也就是同步到坚果 ...

  6. 使用Git将本地文件夹同步至github

    初次通过git将本地文件夹同步至github仓库,记录过程以作总结. 第一部分分步骤描述操作及界面,第二部分记录遇到的问题及参考的解决方法. 一.操作过程 Step 1 创建新仓库 在Github上创 ...

  7. synctoy 远程同步_使用SyncToy将任何文件夹同步到Dropbox

    synctoy 远程同步 Would you like to keep a folder synced with Dropbox without moving it to the Dropbox fo ...

  8. 计算机文件云同步,电脑文件夹同步

    每个成功企业的背后,都有一支甚至是多支优秀的办公团队,而优秀团队的建立,则依赖于全体成员的共同努力,因为只有团队成员们相互协作.密切配合,才能有效增强团队的创造力.而且随着职场需求的不断扩大,还加剧了 ...

  9. linux 文件夹同步备份,SyncToy实现本地文件夹同步备份

    SyncToy实现本地文件夹同步备份 一.下载SyncToy SyncToy 2.1是一个免费的应用程序,它可以同步文件和文件夹到不同的位置.典型用途包括共享文件,如照片.与其他计算机和创建文件和文件 ...

最新文章

  1. 教你mysql如何增加外键约束
  2. 抓住「金九银十」的尾巴!技术面试如何准备,谷歌面试官亲授
  3. oracle字符串提取函数,oracle字符串分割和提取函数定义
  4. git的一些常用命令
  5. 打印给定字符串中字符的所有排列
  6. AGG第四课 局限性
  7. 分割svm的超平面数学特征
  8. Qt5模型/视图结构-视图(View)
  9. 如何使用代码区分service contract和service contract quotation
  10. java2的7次方怎么表示_一元二次方程常见题型之方程根的解法
  11. 1、css引入的方式有哪些?_低氮燃烧技术都有哪些?
  12. Git tag常用命令分享
  13. maven添加mirror_Maven配置setting.xml值Mirror与Repository区别(示例代码)
  14. oracle中t,Oracle中如何用T
  15. [EXCEL高级应用与数据分析].沈浩.扫描版 百度云盘
  16. 计算机网络-试题库(含答案)
  17. JAVA 获取今天、昨天、上周等日期
  18. EasyNLP发布融合语言学和事实知识的中文预训练模型CKBERT
  19. 苹果支付 php,【苹果支付二】apple pay苹果支付以及自动续订订阅开发 - Laravel学习网...
  20. 工程伦理(李正风)——第一章习题

热门文章

  1. linux dns子域服务器,Linux DNS服务器子域授权、转发器和转发域配置实例(三)
  2. linux dns子域授权(一),DNS的基本配置、子域授权与bind编译(第十八九天)
  3. linux dns子域授权(一),DNS子域授权_Sueking Linux Blog的技术博客_51CTO博客
  4. 人口增长 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 33153 通过数: 22753 【题目描述】 我国现有x亿人口,按照每年0.1%的增长速度,
  5. 图解 bmp 文件(BITMAP,windows位图文件)格式
  6. github README.md插入图片,图片尺寸设置,图片无法显示解决
  7. UVCAndroid,安卓UVC相机通用开发库(支持多预览和多摄像头)
  8. 视频直播软件的技术实现方式(jwplayer+ffmpeg+red5)
  9. 卡巴斯基反病毒软件 (k 下载
  10. Blob类型介绍以及查看