换了新电脑,选择 S3 云同步,想把云上的文件给下载下来,但是配置好同步后。发现是本地的空笔记把 S3 云端的给覆盖了。
同步机制我们优化了这样久,为啥还有这样的低级的问题,有很多办法可以解决啊。
比如:
判断本地文件为空,或者远远小于云端文件,提醒用户让用户判断同步方向(同时备份好本地文件)。
数据安全是底线,建议不要在这样的功能上松懈。这代表我们产品的态度。
我尝试从其他机器上恢复下文件,问题应该不大。
换了新电脑,选择 S3 云同步,想把云上的文件给下载下来,但是配置好同步后。发现是本地的空笔记把 S3 云端的给覆盖了。
同步机制我们优化了这样久,为啥还有这样的低级的问题,有很多办法可以解决啊。
比如:
判断本地文件为空,或者远远小于云端文件,提醒用户让用户判断同步方向(同时备份好本地文件)。
数据安全是底线,建议不要在这样的功能上松懈。这代表我们产品的态度。
我尝试从其他机器上恢复下文件,问题应该不大。
在新设备上如果初始化数据仓库后再改动过文件的话会按照该设备上的最新快照覆盖云端。
为什么是这样呢?因为存在删除文件的场景,举个例子:A 设备上有 100 个文件同步到了云端,此时 B 设备上做了删除操作,还剩 20 个文件,那么 B 设备同步时就要把删除也都同步,这样才能保证 A 再次同步时和 B 保持数据一致。
所以新设备上第一次同步时就以新设备的数据为准覆盖云端了,除非新设备上完全没有数据,只有这种情况下才会从云端下载而不是将当前新设备覆盖。
另外,思源也支持选择通过完全手动同步模式来指定同步方向,或者在云端快照历史中通过手动下载云端快照来覆盖本地数据,同时也支持回滚任意本地快照数据。
这些机制都为提供了足够的数据安全保证,谢谢。
我觉得楼主说的有一定道理,软件永远不要相信用户(把用户当傻瓜),反过来用户也一定不要相信软件,操作前做好备份,尤其是这么危险的操作。
另外,推荐借鉴 obsidian 插件 remotely save 的做法,它允许用户设置同步比例,比如文件变动数量超过百分之多少时,停止同步,需要用户确认同步方向后,手动进行同步,这样能最大程度的避免安全隐患。 @88250 @JeffreyChen
已提 issue @88250 @JeffreyChen
Issue #12883 · siyuan-note/siyuan
另外,需要注意,文件过少情况,比如新空间只有几个文件,总不能只有一两个文件时也需要手动同步。建议同时增加当文件超过 x 个时生效选项(这个问题不知是否有其他办法避免,待讨论)。
所以新设备上第一次同步时就以新设备的数据为准覆盖云端了,除非新设备上完全没有数据,只有这种情况下才会从云端下载而不是将当前新设备覆盖。
抱歉,之前我的回复不准确,其实我们已经做了合并处理了:比如两个设备,一个设备上做新增文件 a,一个设备是删除文件 b,同步以后是可以合并的,因为没有冲突。
所以新设备上即使已经有一些数据,还是能合并云端数据的,不会造成用新设备的数据完全覆盖云端导致丢失数据,我刚刚进行了一次测试:
新空间 A 数据:
A 启用同步后可以正常合并已有云端数据:
旧空间 B 上再次同步可以正常同步 A 上的数据并保持一致:
所以我现在不太清楚你遇到的问题应该如何重现,如果能重现的话请随时告诉我,谢谢。
GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。
Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.
Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。
宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。
Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。
昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。
InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。
flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。
Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!
WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。
Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。
上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)
Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。
深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。
Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。
Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。
有点意思就行了
RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖。
用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/
如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。
OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。
钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。
应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于