时不时就会发现有零星的附件丢失

使用的是官方云同步, 太诡异了, 日积月累的, 都是去年及更早的

image.png

image.png

  • 思源笔记

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

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

    28442 引用 • 119760 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • HugZephyr 1
    • 溯源: 等官方回复
    • 找回
      • 先找到这个图片对应的文档
      • 翻一翻快照, 看看有没有
      • 翻一翻这个文档的数据历史, 看看有没有
    • 预防: 这个 js 是定时检测 无效的引用块/丢失的资源文件 的, 可以在刚丢的时候, 就发现, 并解决
    // [js] 定时检测无效的引用块: 20250726_212948
    (() => {
        const CFG = {
            TIME_INTERVAL: "10",  // 检测间隔, 单位:分钟
        }
        async function myFetch(api, data) {
            return fetch(api, {
                method: "POST",
                body: JSON.stringify(data),
            }).then((response) => {
                if (response.ok) {
                    return response.json();
                }
                else {
                    throw new Error("Failed to get file content");
                }
            }).catch((error) => {
                console.log('请求失败:', error);
            });
        }
        async function myFetchPost(api, data, cb = null) {
            cb(await myFetch(api, data));
        }
        const syapi = {
            handle_post: function (api, data, cb) {
                myFetchPost(api, data, (rsp) => {
                    if (rsp.code == 0) {
                        if (cb) cb(rsp.data);
                        return;
                    }
                    console.log(rsp.msg);
                });
            },
            get_invalid_block: function(cb) {
                syapi.handle_post('/api/search/listInvalidBlockRefs', {page: 1}, (rsp) => cb(rsp.blocks));
            },
            get_missing_file: function(cb) {
                syapi.handle_post('api/asset/getMissingAssets', {}, (rsp) => cb(rsp.missingAssets));
            },
            push_message: function(msg, timeout=5000) {
                syapi.handle_post('/api/notification/pushMsg', {msg, timeout});
            },
        }
        function get_time_now_str() {
            const now = new Date();
            // 获取时间部分
            const hours = String(now.getHours()).padStart(2, '0');
            const minutes = String(now.getMinutes()).padStart(2, '0');
            const seconds = String(now.getSeconds()).padStart(2, '0');
            const milliseconds = String(now.getMilliseconds()).padStart(3, '0');
            return `[${hours}:${minutes}:${seconds}]`;
        }
        async function check_invalid_block_timer_cb() {
            const time_str = get_time_now_str();
            console.log(`${time_str}: 定时检测: 无效的引用块/丢失的资源文件`);
            syapi.get_invalid_block((blocks) => {
                const cnt = blocks.length;
                if (cnt) {
                    syapi.push_message(`${time_str} 检测到${cnt}个无效的引用块, 请及时处理`);
                }
            });
            syapi.get_missing_file((files) => {
                const cnt = files.length;
                if (cnt) {
                    syapi.push_message(`${time_str} 检测到${cnt}个丢失的资源文件, 请及时处理`);
                }
            });
        }
        check_invalid_block_timer_cb();
        const intervalId = setInterval(check_invalid_block_timer_cb, CFG.TIME_INTERVAL*60*1000);
        // 如果需要停止定时器,可以调用 clearInterval(intervalId);
    })()
    
    
    
    1 回复
  • RH108

    有遇到过类似的情况,甚至是附件和链接脱离的形式,附件变成了未引用的资源,链接显示那个无附件的破损图片的图标。

  • 在工作空间对应的文件夹下面,搜索一下这个文件名吧;或者通过快照回滚找一下。我遇到类似问题的时候,发现附件移动到了另一个文件夹,REF Issue #16353 · siyuan-note/siyuan

  • 谢了,我发现竟然还有引用失效的。请问你知道引用失效的有没有对应的列表?像那个资源丢失列表一样。

    2 回复
  • EmptyLight

    在设置里那个界面(第二张截图)就能分开看未引用和丢失的资源文件

    1 回复
  • 哦哦,我以为检测的是块引用链接失效的

    1 回复
  • EmptyLight

    脚本定期检测丢失的资源文件,实际上和手动定期检查丢失资源文件页面的作用一样,就是脚本持续运行会更及时发现。不过未引用资源文件我就不知道能不能用脚本检测了,看看作者怎么说吧

  • HugZephyr
    1. 未引用的资源文件: assets 里面存在这个文件, 但是笔记里面没有用到
      这种不影响笔记, 平时不需要关心, 偶尔闲着没事清一下就行
    2. 丢失的资源: 笔记里面引用了这个文件, 但是 assets 下面没有这个文件
      这种就有影响了, 我给的 js 脚本会定时检测
    3. 引用失效的块: 笔记里面通过块 id 引用了某个块, 但是这个块不存在
      这种也有影响, 一般是平时操作没注意导致的, 比如: 先剪切再粘贴了被引用的块, 或者手动删除了被引用的块
      js 脚本也会定时检测这种情况, 可以在这里看
      image.png

    另外吐槽一下, 列出引用失效的块, 这个按钮隐藏的好深, 思源我用了快两年了才知道还有这玩意

请输入回帖内容 ...

推荐标签 标签

  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    203 引用 • 4024 回帖
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 350 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    194 引用 • 1034 回帖
  • wolai

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

    2 引用 • 14 回帖 • 6 关注
  • 倾城之链
    23 引用 • 66 回帖 • 189 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    316 引用 • 547 回帖 • 4 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖 • 1 关注
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 307 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 193 关注
  • 分享

    有什么新发现就分享给大家吧!

    251 引用 • 1801 回帖 • 1 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    135 引用 • 798 回帖 • 2 关注
  • Swift

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

    34 引用 • 37 回帖 • 565 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 436 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    97 引用 • 155 回帖
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 152 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 404 关注
  • jQuery

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

    63 引用 • 134 回帖 • 736 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 2 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • V2Ray
    1 引用 • 15 回帖 • 4 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 706 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 517 关注
  • H2

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

    11 引用 • 54 回帖 • 691 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖