同步出现了很多重复文件

本贴最后更新于 537 天前,其中的信息可能已经时异事殊

我看那个时间点,应该是断过一次网。

不知道为什么,断网之后,为什么出现了很多同名文件,ID 不一样了。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26464 引用 • 110078 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250 7 评论

    同步过程中断网或者其他意外情况不会造成数据重复或者损坏的。

    重复的文档应该是因为生成了冲突文件,请参考 用户指南 - 数据安全 - 数据可用性保障 - 云端同步 章节。

    目前我正在找,唉,大概多了 500 个文件
    moohadun
    能给增加配置,比如,冲突文件自动生成的,带有【冲突文件】后缀这样吗?不然我也不知道自动生成的冲突文件,区别。
    moohadun
    @moohadun 冲突文档的文档名上默认会添加 Conflicted 的(也就是你所说的“冲突”)
    JeffreyChen
    你们的同步逻辑有问题吧。我发现今中午又产生了 500 个文件。
    moohadun
    @moohadun 同步逻辑没有问题的,请参考用户指南云端同步章节,那里有冲突场景介绍。
    88250
    没有产生同步文件。 没有出现默认 Conflicted 的文件。 你去复现一下,将一个文档移动到另一个文件夹中。是不是会出现新文档
    moohadun
    复现的条件,应该是有很多的文档时,将一个父文档移动到另一个地方,云端同步了,你们的本地数据写的不及时,然后与云端比较不一致导致的 。
    moohadun
  • 88250 1 评论

    我这里使用 500 子文档、2000 子文档的数据集多次移动的同时进行同步测试,无法重现该问题,如果你那里能够稳定重现,请上传系统日志,我看下能否定位问题。

    1 回复
    我上传了。
    moohadun
  • moohadun via macOS

    systemlog1.zip

    时间有两个节点:1.31 晚上 19:12-22 分左右。

    2.1 中午,12 点左右

    1 回复
  • 88250 1 评论

    1 月 31 号 19:32 校验索引时发现了 221 个 ID 重复的文档:

    W 2024/01/31 19:32:36 index_fix.go:128: exist more than one tree duplicated [221], reindex it

    往前看可以找到是从 Android 端同步过来的:

    I 2024/01/31 19:13:39 siyuan.go:138: downloaded object [siyuan/1642173161657/repo/siyuan-note-wei/indexes/2b2524e142b3371892a71743d9f824a018d675a3] I 2024/01/31 19:13:39 sync.go:1592: got cloud latest [device=ec69xd57s31n/android, id=2b2524e142b3371892a71743d9f824a018d675a3, files=8662, size=1.6 GB, created=2024-01-31 18:40:09]

    Android 端的这个快照 2b2524e 有 8662 个文件。以 ID 重复的 20240110112136-hmzri1c.sy 为例,可以看到在本地的路径是:/20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy,但是 Android 端的路径是 /20240110224850-mj5s0a2/20240110112136-hmzri1c.sy,中间少了一层,这种情况下文件路径不同,所以不会自动合并,而是将 Android 的文件下载到本地,导致本地存在了两个一样 ID 的文档。

    继续往前追溯 Android 端同步,可以找到 1 月 30 号的同步:

    I 2024/01/30 09:35:00 sync.go:1592: got cloud latest [device=ec69xd57s31n/android, id=8638d653e54c7863c2a04ab62e4564b2faf74591, files=8412, size=1.6 GB, created=2024-01-30 09:34:58]

    这时候 Android 端快照 8638d65 文件数量是 8412,也就是说这段时间内 Android 端增加了 250 个文件,这些文件是其他端同步过去的还是如何新增的,需要 Android 端的日志才能进一步分析了,可能就是这些文件重复导致的问题,请上传 Android 端的日志,谢谢。

    1、安卓日志已经上传;2、你们肯定考虑了同步文件的时候,发生了文档移动的情况(不限于跨文件夹移动);3、可否告知“中间少了一层,这种情况下文件路径不同,所以不会自动合并”这个逻辑是为了哪种场景。4、还有就是我删除多个文件夹后来又出现了。不知道为啥,甚至删不掉,我只能手动清空文件系统
    moohadun
  • moohadun via macOS
    1 回复
  • 移动端的这份日志中可以找到快照 2b2524e 生成的时候已经有重复文件了:

    I 2024/01/31 18:40:09 repo.go:595: walk data [files=8662] cost [894.393749ms] I 2024/01/31 18:40:09 ref.go:50: got local latest [device=ec69xd57s31n/android, id=8f878d82797dac8e978e35833d6e51067f83bbb7, files=8412, size=1.6 GB, created=2024-01-31 18:39:20] I 2024/01/31 18:40:09 ref.go:64: updated local latest to [device=ec69xd57s31n/android, id=2b2524e142b3371892a71743d9f824a018d675a3, files=8662, size=1.6 GB, created=2024-01-31 18:40:09]

    往前看可以找到文件 /20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy 是从云端同步下来的,但是此时本地同时也存在了文件 /20240110224850-mj5s0a2/20240110112136-hmzri1c.sy,所以这两个文件不存在冲突(虽然文件内容一样但是路径不同),也就会被作为不同的两个文件对待:

    I 2024/01/31 18:40:08 sync.go:308: sync merge upsert [7d95d3f1adae4694dadffa6539b88e8e9456bb7f, /20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy, 2024-01-10 11:22:07] .... I 2024/01/31 18:40:09 sync.go:419: merge index add [7d95d3f1adae4694dadffa6539b88e8e9456bb7f, /20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy, 2024-01-10 11:22:07] .... I 2024/01/31 18:40:09 sync.go:1336: upsert file [598049fc72fdf7c8d2955b47bd4512c05f676902, /20240110224850-mj5s0a2/20240110112136-hmzri1c.sy, 2024-01-10 11:22:07] chunk [9670d894d23a470a0eb384536cb3b690d2650dc0]

    最终结果就是产生了重复文档。

    你那边是否手动操作过文件系统(比如复制文件)?另外是否还有其他参与同步的设备,如果有的话请一并提供日志文件。我们得再找找重现步骤,这个问题之前没有人反馈过,请帮助我们尽量跟踪定位到问题,谢谢。

  • moohadun via macOS

    systemlog2.zip

    这个日志看看有吗?不是很确定。

    回答:1,没有手动操作过文件系统的。

    疑惑:能否解惑,“中间少了一层,这种情况下文件路径不同,所以不会自动合并"这个逻辑是为了哪种场景。id 相同为啥不能认定为同一个文件嘞,增加判断路径是为了场中场景

    1 回复
  • 88250 2 评论

    这份 macOS 端的日志 1 月 30 号 12 点进行了一次全量下载,文件没有重复,也没有其他异常。

    文件路径不同的话肯定就是不同的文件了。

    我又在 PC 端日志中搜索了下,发现 /20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy 文件第一次出现是在 1 月 31 号 15 点 16 分:

    I 2024/01/31 15:16:54 sync.go:1336: upsert file [7d95d3f1adae4694dadffa6539b88e8e9456bb7f, /20240110224850-mj5s0a2/20240111162221-s1f6o2h/20240110112136-hmzri1c.sy, 2024-01-10 11:22:07] chunk [9670d894d23a470a0eb384536cb3b690d2650dc0]

    这个文件最后的更新时间是 2024-01-10 11:22:07,后面也也只没有变动过,只是云端一直都存在 /20240110224850-mj5s0a2/20240110112136-hmzri1c.sy,所以文件就重复了。

    那我也不懂了。我这个情况出现的还是挺多的。好像最近这几个月都有过,只不过,我这次因为重复的太多了,我才提。会不会是因为我的文档太多了呢
    moohadun
    @moohadun 那就只能继续观察了,麻烦留意重现步骤。我这边在 10000+ 文档的数据集下测试移动文档暂时没有发现重复问题。
    88250
  • moohadun via macOS

    @88250 现在同步又出现问题了,这次参与的只有两个终端。场景:将文件夹下 A 的 A1 文件移动到 B 文件夹下,然后打开安卓端,进行同步。然后,文件夹 A 下的 A1 文件没有了。B 文件夹下多了一个新的文件 B1

  • moohadun 1 2 评论 via macOS
    1 回复
    旧的 ID 信息———((20231119192606-jxpmujz '任务管理'));((20231122104908-bg77jgx '项目管理'))
    moohadun
    新的 ID 信息 任务管理](siyuan://blocks/20240326165050-tsnl9rk);项目管理](siyuan://blocks/20240326165050-vptp2gj)
    moohadun
  • 找到问题了,是因为移动端下午 16:50 同步时索引校验程序错误修订了重复 ID(这时候同步还未完成,不应该订正数据)

    W 2024/03/26 16:50:50 index_fix.go:242: exist more than one tree with the same id [/storage/emulated/0/Android/data/org.b3log.siyuan/files/siyuan/data/20240110224850-mj5s0a2/20231119192606-jxpmujz.sy], reset it

    这个问题下个版本解决 Issue #10761 · siyuan-note/siyuan 感谢反馈!

    1 操作
    88250 在 2024-03-27 09:05:42 更新了该回帖
请输入回帖内容 ...

推荐标签 标签

  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    86 引用 • 165 回帖 • 1 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 735 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 831 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    591 引用 • 3528 回帖 • 2 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 360 关注
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 561 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 160 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    326 引用 • 1395 回帖 • 3 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 260 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    172 引用 • 1542 回帖
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 222 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 310 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 80 关注
  • 导航

    各种网址链接、内容导航。

    45 引用 • 177 回帖
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 762 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 3 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 614 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 517 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    694 引用 • 537 回帖 • 1 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    61 引用 • 29 回帖 • 10 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 269 关注
  • danl
    181 关注
  • CodeMirror
    2 引用 • 17 回帖 • 174 关注