在使用 SillyTavern 进行本地部署时,用户常将角色设定、聊天记录和扩展插件等数据保存在本地目录中。一个常见问题是:**如何确保在升级 SillyTavern 或更换设备时避免配置和对话数据丢失?** 由于其数据默认存储于客户端浏览器或特定本地文件夹(如 userdata 目录),若未明确备份这些路径中的 JSON、PNG 和日志文件,系统重装或应用更新可能导致数据被覆盖或清除。此外,部分用户误以为浏览器同步功能可跨设备保留数据,但实际上 LocalStorage 不会自动同步。因此,如何建立可靠的本地+异地双备份机制,成为保障个性化数据完整性的关键挑战。
1条回答 默认 最新
白街山人 2025-10-28 09:21关注1. 数据存储机制解析:SillyTavern 的本地数据结构
SillyTavern 作为一款基于 Web 技术栈的本地化角色对话平台,其核心数据主要依赖于两种存储方式:浏览器 LocalStorage 与本地文件系统中的
userdata目录。前者用于保存轻量级配置(如界面偏好、最近访问角色),后者则承载角色设定(JSON)、头像图像(PNG)、聊天记录(JSONL 或 TXT)以及插件配置文件。├── userdata/ │ ├── characters/ │ │ └── alice.json │ │ └── bob.png │ ├── chat/ │ │ └── alice_chat.json │ ├── settings/ │ │ └── default_settings.json │ └── extensions/ │ └── tts_plugin_config.json理解这一目录结构是构建备份策略的基础。若未对上述路径进行监控和归档,系统重装或应用升级极易导致数据丢失。
2. 常见数据丢失场景分析
- 浏览器缓存清除:用户误操作清理浏览数据,导致 LocalStorage 中的角色缓存消失。
- 应用更新覆盖:新版 SillyTavern 可能重新初始化
userdata文件夹。 - 设备更换无迁移:新设备未复制旧环境的数据目录。
- LocalStorage 同步误解:Chrome Sync 等功能仅同步扩展、书签,不包含 LocalStorage。
- 磁盘故障或误删:缺乏冗余备份时,单点故障即造成不可逆损失。
3. 备份策略设计原则
原则 说明 实现方式 完整性 覆盖所有关键数据类型 JSON、PNG、TXT、配置文件全量纳入 时效性 支持增量与定时备份 cron + rsync / robocopy 可恢复性 版本化归档便于回滚 Git / Zstandard 压缩包命名规范 安全性 防止未授权访问 加密压缩(7z AES-256) 跨平台兼容 适应不同操作系统路径差异 使用相对路径或环境变量 4. 实施双备份机制:本地 + 异地
- 定义主数据源路径:
~/SillyTavern/userdata及浏览器 LocalStorage 键前缀st_user_*。 - 本地备份采用每日快照脚本:
#!/bin/bash TIMESTAMP=$(date +"%Y%m%d_%H%M%S") BACKUP_DIR="$HOME/backup/sillytavern/local" SOURCE_DIR="$HOME/SillyTavern/userdata" mkdir -p "$BACKUP_DIR" tar -czf "$BACKUP_DIR/st_backup_$TIMESTAMP.tar.gz" -C "$SOURCE_DIR" . find "$BACKUP_DIR" -name "*.tar.gz" -mtime +7 -delete- 异地备份通过 RCLONE 同步至云存储(如 Backblaze B2、OneDrive):
rclone sync "$BACKUP_DIR" remote:st-backup --exclude "*.tmp"5. 浏览器数据提取与持久化
LocalStorage 数据虽不易导出,但可通过开发者工具手动导出,或编写自动化脚本注入页面执行提取:
// 导出 LocalStorage 到 JSON 文件(需在控制台运行) const data = {}; for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i); if (key.startsWith('st_')) { data[key] = localStorage.getItem(key); } } copy(data); // 手动粘贴保存更高级方案可集成 Puppeteer 自动化流程,在每次会话结束时抓取并合并至主备份流。
6. 灾难恢复流程图
graph TD A[发生数据丢失] --> B{判断丢失类型} B -->|仅本地损坏| C[从异地云存储拉取最新备份] B -->|全盘崩溃| D[重建环境并挂载备份镜像] C --> E[解压 tar.gz 至 userdata 目录] D --> E E --> F[验证角色与聊天记录完整性] F --> G[启动 SillyTavern 测试加载] G --> H[恢复完成]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报