数据同步的疑问

问题一:

我发现 3.0.0 有一个和之前版本的 同步不同的表现,

之前 PC 和移动端(通常移动如手机 ipad 端有数周未修改) 同步时, 常出现, PC 端新增一些"同名文件"(含文件夹)

而 3.0.0 则同样有一些"同名文件"(含文件夹),只不过名称改为了 Untitled

请问

1.这是思源的什么特性造成的, 是否能优化? 还是被认为是某些不能修改的 feature 导致?
2.这类问题通常在我在一端做小量(~100 个)文档更新(调整内容和架构)时会出现, 最烦的就是以前的同名文件夹, 要一一鉴别保留哪个

@88250

问题二:

另外一个补充问题, 如果我使用工具将 SiYuan asset 路径下的资源全部压缩一遍(同名保存), 是否被被自动更新, 或要怎么操作? (因为我想压缩云空间,所剩不多了)

  • 思源笔记

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

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

    20240 引用 • 78276 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 88250
    1. 这部分同步逻辑没有改过,不太确定是不是长时间不同步老版本的遗留问题。请将所有设备都更新到最新版,如果还能重现问题的话麻烦描述重现步骤
    2. 使用外部工具压缩文件后只要路径保持不变但文件更新时间改变的话就可以正常同步
  • Woody2022

    问题一:
    1.首先同步时各自的版本是最新的( 除非比如手机端 app 还没发布最新的, 不过这种同名文件存在的情况从 2.x.x 就一直存在;
    2. 我确认下, 各端做"重建索引"一定算新版本? 一定会上传云吗? 是否 a 平台重建后, b 平台打开着软件重建并上传云,a 平台此时会有问题?

    问题二:

    我从 asset 目录,如何找到素材在哪个文档? 搜索资源的逻辑好像不对 @88250

    2 回复
  • 88250

    是不是因为开启了 设置 - 云端 - 同步冲突时生成冲突文档?如果开启的话,会生成重复文档,但是不会尝试 Untitled 文档,除非是很早之前同步问题导致的遗留数据问题。

    重建索引不会同步云端的,这是本地重建索引。建议不要同时多设备在线同步,具体细节请参考用户指南云端同步章节。

    搜索资源文件路径可以开启 设置 - 搜索 - 索引资源文件路径 选项,一个资源文件可能存在于多个文档中。

    1 回复
  • Woody2022

    问题二
    2.2 "丢失的资源文件"这个功能能不能再往下一步,都不知道是哪个文件丢失了资源 @88250

    2 回复
  • 88250

    这个问题之前讨论过,请关注 Issue #8471 · siyuan-note/siyuan

  • 重建索引并不算。两边文件一致的话,无论怎么重建理论上都不会上传东西。

  • 缺失的资源文件在安装 openAPI 插件后可以暂时使用下面的嵌入块查询找到:

    //!js
    let query = async()=>{
        let data = await openAPI.siyuan.fetchSyncPost('/api/asset/getMissingAssets',{})
        let missSource = data.data.missingAssets
        searchPath = `'${missSource.join("','")}'`
        sqlData = await openAPI.siyuan.fetchSyncPost("/api/query/sql",{stmt:`select * from assets where path in (${searchPath})`})
        ids = sqlData.data.map(x=>x.block_id)
        return ids
    }
    return query()
    
    1 回复
  • Woody2022

    之所以开启冲突文档是潜意识中认为两害相权取其轻, 如果不生成冲突, 是什么样的预期结果, 好像没有很清晰的(几种)冲突的预期(和最坏结果), 因为从数据历史找回目前任然几乎不可用(实测没有记录所有变更)

    so, 有没有哪里描述了不同的最坏预期?

    以及数据历史有变成 beyondcompare 水平的比较器吗?(这功能做好应该就能给同步失败托底了) @88250

    1 回复
  • 88250

    快照历史目前看来是很可靠的,因为每次同步前、同步后都会生成快照,请仔细看下数据区别。

    细节的 diff compare 目前做不到 beyondcompare 的水准,因为文档数据不是简单的行 diff,而是需要呈现所见即所得,后续有开发资源的话会逐步改进,谢谢。

  • Woody2022

    具体指什么插件

    image.png

    为什么这个"自动化搜索资源文件" 要用 openai 接口?

    1 回复
  • Woody2022

    另有一类 MP4 无法搜索到, 但这个路径是从那个文档的 MP4 直接提取的(文件肯定在,也没有丢失)image.png

    @88250 会是什么原因?

    1 回复
  • 88250

    试试重建索引后再搜索。

    1 回复
  • Woody2022

    还是搜不到, MP4 右键打开位置都能在 finder 找到

    1 回复
  • 88250

    我这里简单使用图片测试了一下可以搜索到:

    image.png

    麻烦导出改文档 .sy.zip 发送给我测试一下 845765@qq.com

    1 回复
  • openAPI,而不是 openai,这是一个给插件作者调试用的插件,提供了思源一些内部的功能。

    1 回复
  • Woody2022

    谢谢

  • Woody2022

    已发邮件

    1. 如果设置不生成冲突, 是什么样的预期结果? (默认的"旧"版本会被覆盖吗?)

    好像没有很清晰的(几种)冲突的预期(和最坏结果)

    2.如果手机,pad 端设置只读, 好像也会上传本地的一些块用于对比? 是否有绝对安全的"只下载云端最新版本,差异化更新本地"的这种模式?

    1 回复
  • 88250
    1. 用户指南里面介绍了几种情况以供参考
    2. 使用完全手动同步模式
    1 回复
  • 88250

    视频块无法通过路径搜索的问题已经定位到,下个版本修复 Issue #10468 · siyuan-note/siyuan 谢谢。

  • Woody2022

    "完全手动同步模式" 是指, 手机端不"自动更新", 而是每次 想更新时,点一次云同步?

    1 回复
  • 88250

    嗯嗯。

请输入回帖内容 ...

推荐标签 标签

  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 597 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 50 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 430 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 10 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    124 引用 • 580 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 120 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    171 引用 • 814 回帖
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 12 关注
  • 博客

    记录并分享人生的经历。

    272 引用 • 2386 回帖
  • 小薇

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

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

    34 引用 • 467 回帖 • 712 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    11 引用 • 5 回帖 • 580 关注
  • 程序员

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

    544 引用 • 3531 回帖
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 3 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 618 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    103 引用 • 126 回帖 • 442 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    10 引用 • 88 回帖
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 430 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 605 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    713 引用 • 1174 回帖 • 96 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    116 引用 • 99 回帖 • 249 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 645 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    141 引用 • 441 回帖
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 19 关注