TgWitness / 文档

已测试的内容 →

参考 / 证据

Telegram · 存储与恢复

备份、将旧文件移至云端、Object Lock 下的副本以及在新设备上的恢复。

TgWitness / 文档 · 部署与恢复

部署与恢复

该面板将任务分为三类:

任务 功能介绍
保留备份 将已签名的日志、检查点、已保存的文件和队列中的导出内容复制到配置好的 S3 目标位置。
免费本地存储空间 将选定的旧附件复制到 S3 或 rclone 云远程存储中,完整读取这些附件,验证加密字节,然后删除已验证的本地副本。
保留一份证据副本 配置 S3 Object Lock 并检查返回的保留状态。该服务必须确认请求的模式和日期。

释放空间时绝不会删除或覆盖已签名的日志。每个附件都会保留 其原始SHA-256以及一份恢复凭证。可选的 gzip 压缩会在 经过身份验证的加密之前进行。云端文件名不包含 Telegram 用户名、 聊天 ID 或原始附件名称。单个附件最大可达 32 GiB。

仅凭上传响应本身并不意味着可以删除文件。TgWitness会下载 完整的加密对象并验证其大小,SHA-256保存收据, 然后在删除前立即再次检查本地字节。如果上传失败、 回读结果不同或传输被取消,本地文件将保留原位。如果 已启用的证据备份尚未复制该文件,删除操作也会等待备份完成。

本页内容

磁盘空间即将耗尽时#

当可用空间低于参数 → 附件 → 可用磁盘空间中的阈值(默认 1 GiB)时,附件下载会暂停并保留队列。文本观察继续进行。这不受通知设置影响:关闭通知不会关闭下载预留空间或存储保护措施。

若要更早介入,请启用自动运行,选择删除本地文件以释放空间,并启用磁盘空间不足时额外执行一次转存。此可选规则默认在可用空间低于 5120 MiB 时启动,分批处理直到可用空间达到 10240 MiB。两个阈值均可配置。它与手动执行使用相同的目标位置、文件最小存放时间、批量上限、完整回读验证和证据备份前提条件,不会自行启用目标位置。每 30 秒检查一次;发生错误或没有进展时,下次尝试推迟五分钟。规则状态和重试时间在重启后保留。规则未激活时,定时任务仍按正常间隔运行。

面板显示可用空间、打包预留空间、空间不足规则是否就绪,以及因临时空间不足而跳过的文件。打包和恢复在开始前检查临时空间峰值需求,并在写入过程中检查可用空间。预留量使用下载设置,但存储操作至少保留 64 MiB。这些检查不是文件系统配额;其他进程仍可能在两次检查之间消耗空间。

Gzip 对远程对象进行无损压缩,不会缩小活动日志,也不会创建本地归档。JPEG、视频和 ZIP 可能几乎不缩小,甚至略微增大。启用压缩时,当前打包流程可能临时需要约两倍附件大小的空间,再加上预留量。请为最大的文件选择足够早的启动阈值。无法打包的过大文件会被保留并报告;较小文件和已验证的远程副本仍可帮助释放空间。已有验证通过的副本时,无需再次创建本地打包文件即可移除本地文件。恢复同样需要临时空间,空间不足时可能被拒绝。

没有符合条件的可移动文件或未配置目标位置时,TgWitness 无法自动回收空间。存储管理绝不会裁剪或重写签名日志。新的文本观察仍需要磁盘空间。

连接目标#

在“附加功能”→“存储与磁盘空间”→“管理存储”中,选择任务和目标位置, 保存后,选择“测试上传与下载”。该测试会上传一个随机的微小探测数据并将其 读回。此过程不会使用 Telegram 内容。

对于 S3,请使用服务提供商的实际端点、区域和存储桶。Wasabi、Backblaze、 Cloudflare R2 及其他兼容服务均使用相同的 S3 设置。仅具备兼容 API 并不意味着支持 Object Lock。治理模式可能允许 授权管理员绕过保留策略;合规模式则有不同的 限制。在依赖保留策略之前,请先阅读返回的 Object Lock 状态。

对于 rclone 目标,请使用 rclone 的提供商设置创建一个远程,并将 该远程的 [name] 部分粘贴到面板中。已安装的辅助程序支持 MEGA、Google Drive、OneDrive、Dropbox、Box、pCloud 以及 选择器中显示的其他提供商。凭据保存在该工作区的加密保险库中。OAuth 刷新信息也会保存回保险库。凭据不会添加到日志 事件中,也不会包含在恢复下载中。

该辅助工具安装在工作区内部,包含一个固定版本和 SHA-256。 它不会被添加到系统 PATH 中。配置文件和工作文件是 该工作区内的临时文件。基于命令行和本地文件的远程连接将被 拒绝。rclone 目前要求为 外部请求显式选择 直接 路由。请使用原生 S3 存储作为工作区的 SOCKS5 或 HTTP 路由; rclone 不会在路由不可用时静默绕过。

请妥善保存恢复文件#

请选择“复制文件后保存恢复文件”,并将该文件保存在 与安装目录分开的位置。该文件包含解密密钥和已签名的对象 收据,因此请将其视为私钥备份。请将原始远程配置 和目标凭据也分别单独保存。在后续复制操作之前 生成的恢复文件不包含该后续文件的收据。

签名密钥的指纹应已独立记录。仅通过 与同一文件内提供的密钥进行比对的签名,无法确定该 恢复文件属于谁。

若要修复现有工作区中缺失的存储收据,请打开“从已保存的恢复文件中恢复文件”, 并选择该文件。该面板会验证签名,并要求使用相同的工作区 签名密钥。若存储密钥不同,系统将拒绝替换。随后选择“恢复 所有文件”。恢复过程会暂停自动存储规则,以确保下一次计划的 处理不会立即再次删除已恢复的文件。当 本地副本处理完毕后,请重新启用该规则。

恢复操作会验证密文、认证解密过程、在 必要时进行解压,并检查原始明文SHA-256,然后将文件放入 media/。 损坏的远程对象绝不会替换本地文件。若现有本地文件的 字节内容不同,则会保留该文件以供审查,而非被覆盖。

安装丢失后的恢复方法#

在另一台机器上安装 TgWitness。使用私有恢复文件、单独 记录的指纹以及原始目标凭据:

python -m tgwitness.storage recover \
  --recovery storage-recovery.json \
  --fingerprint TRUSTED_WORKSPACE_SHA256 \
  --credentials original-rclone.conf \
  --output recovered-attachments

对于 S3, --credentials 指向一个包含 access_key 和 secret_key;已签名的恢复文件提供目标设置。 该命令使用直接外部连接,并在 rclone 远程需要时下载固定的辅助程序 。它拒绝使用现有的输出目录。

恢复的原始字节将写入 recovered-attachments/media/,文件名由 其SHA-256决定。 recovery-log.jsonl 是一个关于恢复操作的未签名记录。 该命令不会重建丢失的已签名日志或其签名密钥。请保留 完整的工作区备份以备不时之需。存储恢复文件并非完整的工作区 备份。

操作员机器人和完成通知#

该 Telegram 机器人归操作员所有。请通过 BotFather 创建该机器人,并在控制面板中设置其 令牌、目标聊天室以及明确允许的 Telegram 用户 ID。 发件人和聊天室必须一致。转发消息以及来自其他 机器人的命令将被忽略。

/status 并且 /stats 可在默认的“仅状态”模式下使用。可选的 控制模式还增加了 /pause, /resume 和 /copy. /copy 并请求已配置的 存储任务;这并不意味着远程上传已经完成。命令 不能提供任意的 URL、文件或 shell 程序。

请分别设置提醒和任务完成的通知。完成 通知会区分存在缺失的账户导出与完整的导出,并显示 历史记录和存储数量。除非在通知设置中单独 启用,否则不会包含消息摘录。服务选择器是根据实际 安装的 Apprise 目录生成的,而非一组固定的提供商示例。