文件同步该如何实现?

22次阅读

共计 673 个字符,预计需要花费 2 分钟才能阅读完成。

我现在在开发一个 游戏存档管理工具,关于云同步的呼声很高,我近期想要实现这个功能,却发现自己频繁遇到阻力,恳请各位赐教

我需要先介绍一下这个软件存储东西的结构,在软件所在目录下,结构大概如下

  • 存档管理器.exe
  • GameSaveManager.config.json // 用来保存一些配置信息,包括软件配置、具有哪些游戏、那些游戏对应的存档路径
  • save_data

    • 游戏名 1

      • Backups.json // 当前游戏备份信息,结构大概是[{备份时间,路径,描述},]
      • extra_backup // 一些额外备份文件,内部只有一些 zip
      • 2024-01-1_20-20-52.zip // 游戏存档的备份文件,以备份时间命名

对配置进行修改,或者增加、减少游戏会导致 GameSaveManager.config.json 发生变化,而对一个游戏进行备份存档、删除存档的操作会导致对应游戏名文件夹下的 Backups.json 发生变化,对应 zip 压缩包增加或删除

现在我遇到的问题是,假设游戏 A 有两个存档备份,即{A1,A2},初始状态下机器 1、机器 2 和云端都是这个状态,而机器 1 执行删除 A1 后覆盖了云端的配置,机器 2 在增加 A3 后进行同步,这时该如何处理?我想要达到的结果是两个操作都有效,同步完成后三端为{A2,A3}

我现在想到的一个解决办法是,因为游戏不可能同时在两个机器上玩,干脆软件启动时就强制同步一次,且执行删除、增加操作后立刻发送到云端,要求执行相同操作,这样的话相当于在做修改前就必须 pull(用 git 来类比),修改同时自动 push,避免冲突的出现,但是感觉并不是一个好方法

正文完
 0