-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
建议同步可设置当文件变动超过x%时需要手动同步选项,以降低同步意外覆盖风险 #12883
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
这个应该没什么用 |
当然有用了,要不然,空间就一个文件或两个文件时,被更改文件超过了50%,那也提示让用户手动同步? |
这样的话如果新建工作空间新增了一个文档,然后同步,不提示的话不就直接覆盖上传了吗 |
“当文件少于x个时生效”还比较合理,但用处也不大 |
你说的没错,我这句话就是这个意思,怎么能兼容二者,又能避免覆盖问题。 我之前想过一个同步方案没有实践过(给remotely save推荐过,但被否定了,否定原因是因为ob是md文件,作者认为用户如果手动修改这些文件会导致清单失效,思源应该没这个问题),也没有研究过市面上常见的同步算法,不知是否可行或有其他隐患或bug? 大概就是每个客户端都存一份修改清单,比如哪些修改,哪些删除,哪些新增,当同步时,两边清单对比,新增的直接同步另一方,修改的如果是同一个需要根据修改时间对比,并产生冲突文件,删除的,两边同时删除即可。 |
不现实,这个文件会越来越大的。 |
这个文件,同步完会清空,只是记录从上次同步到现在的修改清单。 所以,一般不会太大,就是简单的标记,大不了放数据库,思源不是有数据库吗? 之所以当时想这个方案,是因为rs同步是要一个个文件扫描并对比的,相对于全量扫描清单更高效。 |
你可以看看思源的日志的大小,如果存储修改文件的清单,会远远大于这个日志文件的大小 |
日志是累加,不会清空,这个文件,同步完会清空,只是记录从上次同步到现在的修改清单。 同步始终以客户端和云端比较,云端始终保持最新,这样应该没啥问题吧。 |
对于设置变更百分比我觉得还是有问题的,就像之前讨论过的,很难判定什么是有效变更,除了数量,大小是不是也要考虑?比如虽然我只改变了一个文件,但是这个文件是个较大的资源文件,并且非常重要,那么这种情况下是不是也需要提示,如果不提示是不是也会被用户认为思源的同步不稳健? 这样的参数多了如果配置不当,那还不如不配置,同时也增加了新用户的上手难度。 后面提到的变更列表的方案现在其实就有,也就是对比两次同步之间本地数据的变更,这个变更列表是通过对比快照得到的,思源本身就是根据这个变更进行的同步合并,比如两个设备,一个设备上做新增文件 a,一个设备是删除文件 b,同步以后是可以合并的,因为没有冲突)。但是这个不解决现在遇到的问题啊,现在的问题是大量变更无法判断。 综合考虑,我认为这部分在技术上是无法很好解决的,但是思源的数据快照系统已经提供了灾难发生时兜底的方案,最坏情况下用户也可以通过快照回滚数据,事前无法处理的我们放到事后处理吧,所以现在我觉得较为可行的改进就是发现大量数据变更(写死 50 个文件以上 upserts/removes 超过 25 个)就提示用户:同步产生了较大数据变更,可通过 数据历史 - 数据快照 查看变更或者回滚。 提示一下用户即可,进一步操作还是用户自己来做,这样安全一些。 |
按 .sy 的变更数量吧?.sy 变更超过 50% 插件更新一下就变更几百个文件确实不适合用来判断。 |
这个我认为不合适,多数遇到同步问题无法独自解决的用户应该是不理解快照这个机制的。 更别说有的用户回滚之后会再点一次同步,然后又被覆盖了。 |
@TCOTC 是文案有问题还是方案有问题? |
方案有问题,不能只靠提示用户。如果出了问题,用户是无法只靠提示解决问题的。 应该尽量避免问题出现,在出现大量笔记变更的时候让用户手动选择保留云端数据还是本地数据。 |
前面我已经分析了避免问题是不可行的,因为无法稳妥判断大量变更,并且引入更多配置变量会导致问题更为复杂。
那合并是不是也要选,选择错了是不是也要回滚? 这些问题最终只有回滚一个兜底选项,所以提示用户我认为才是唯一可行的提升,但是说到底,这个提升也并不是太大…… |
很多用户都是在同步新设备时出问题,其他情况下很少遇到问题。 应该提供选择为这种操作增加一层保险。 想了想感觉 remove 占 90% 的时候让用户选择会比较合适。 |
问题就是这个保险不保险。 新设备同步也很难定义的,因为要考虑到新设备上也存在有数据需要同步的情况,如果一点数据没有那肯定是下载云端,不会有问题。 |
出问题的情况应该是本地有一点数据,同步之后覆盖掉了云端。可以针对这种情况去解决。 |
我已经补充 https://ld246.com/article/1729305670746 中我之前不正确的回复了,所以实际上看目前这个问题并不存在,如果存在的话应该是实现上还有缺陷,并不是设计问题。 这个 issue 先关闭了,如果能重现问题再考虑改进。 |
In what scenarios do you need this feature?
有时候,新设备同步时,如果不小心改变了文件,可能导致云端数据被新设备空文件覆盖的情况,这种操作很常见,也是很危险的,如果用户没有备份的情况下,后果可能会很严重。
关联帖子:https://ld246.com/article/1729305670746
Describe the optimal solution
所以,建议同步设置里增加文件最大变动比例选项,比如可设置当文件变动超过x%时(remotely save插件默认是50%)需要手动同步,这样,当文件变动超过指定比例时,停止自动同步并提醒用户,需要用户确认后,手动进行同步,以最大程度降低文件被意外覆盖风险。
另外,需要注意,文件过少情况,比如新空间只有几个文件,总不能只有一两个文件时也需要手动同步。建议同时增加当文件超过x个时生效选项,但加了这个选项修改又会导致修改覆盖。(这个问题不知是否有其他办法避免,待讨论)。
Describe the candidate solution
No response
Other information
No response
The text was updated successfully, but these errors were encountered: