Seerr 数据备份与恢复完整指南:settings.json、SQLite 与 PostgreSQL
Seerr 数据备份与恢复完整指南settings.json、SQLite 与 PostgreSQL【免费下载链接】seerrOpen-source media request and discovery manager for Jellyfin, Plex, and Emby.项目地址: https://gitcode.com/GitHub_Trending/je/seerrSeerr 是一个面向 Jellyfin、Plex 与 Emby 的开源媒体请求与发现管理器日常运行中会产生两类关键数据Web UI 中所有配置项组成的settings.json以及包含用户账户、媒体请求、封禁名单等全部业务数据的数据库。本文以官方文档 backups.md 为核心结合仓库源码讲解 Seerr 数据究竟存放在哪里、如何在不停机或停机两种场景下完成 SQLite / PostgreSQL 的备份以及迁移服务器后如何正确恢复并重新启动应用帮助你在升级、迁移或容灾时做到心中有数、操作可复现。Seerr 保存哪些数据分别存放在哪里Seerr 的数据严格分为两部分设置Settings与用户数据User Data两者存储位置与备份策略截然不同。设置settings.jsonSeerr Web UI 中Settings面板里的全部配置都会被保存包括与 Radarr、Sonarr、Jellyfin、Plex 的集成配置、通知通知代理设置、网络与元数据选项等。这些设置统一存放在 Seerr 数据文件夹config 目录下的settings.json文件中。从源码可以确认这一路径的解析逻辑见 server/lib/settings/index.tsconst SETTINGS_PATH process.env.CONFIG_DIRECTORY ? ${process.env.CONFIG_DIRECTORY}/settings.json : path.join(__dirname, ../../../config/settings.json);也就是说只要设置了CONFIG_DIRECTORY环境变量settings.json就会跟随该目录否则使用默认的config目录。settings.json的内容结构在 AllSettings 接口 中定义包含mainAPI Key、应用标题、默认权限、配额、plex/jellyfin/radarr/sonarr、notifications、jobs、network、metadataSettings等完整字段——备份这一个文件即可恢复全部 Web 配置避免重新走一遍初始化向导。用户数据数据库除设置之外的所有数据——用户账户、媒体请求、封禁名单blocklist等——都存储在数据库中数据库引擎支持SQLite默认与PostgreSQL两种。数据库引擎的选择与连接参数由环境变量控制。从 server/utils/dbType.ts 可以看到判断逻辑export const isPgsql process.env.DB_TYPE postgres;而 server/datasource.ts 中的生产环境 SQLite 配置则揭示了数据库文件的默认位置const prodConfig: DataSourceOptions { type: sqlite, database: process.env.CONFIG_DIRECTORY ? ${process.env.CONFIG_DIRECTORY}/db/db.sqlite3 : config/db/db.sqlite3, synchronize: false, migrationsRun: false, enableWAL: true, ... };因此默认情况下SQLite 数据库文件位于config/db/db.sqlite3且启用了 WALWrite-Ahead Logging模式。PostgreSQL 模式下则通过DB_TYPEpostgres、DB_HOST、DB_PORT、DB_USER、DB_PASS、DB_NAME等环境变量连接外部数据库仓库中的 compose.postgres.yaml 给出了完整的联调示例database-config.mdx 中有更详细的参数说明。备份备份策略取决于你的数据库引擎与部署方式核心原则是settings.json始终要备份数据库按引擎选择热备或停机备份。备份 SQLite 数据库SQLite 是单文件数据库有三种可行的备份方式方式一文件系统快照推荐用于 Kubernetes 等场景如果备份系统支持文件系统快照例如 Kubernetes 搭配 Volsync可以直接对整个 Seerr 数据文件夹做快照。此时无需停止应用快照层会在文件系统层面保证一致性。方式二停止应用后复制 config 文件夹否则需要先停止 Seerr 应用再完整备份config文件夹。停机保证了db.sqlite3在复制过程中不会产生并发写入是最稳妥的兜底方案。方式三使用 SQLite CLI 在线热备适合高级用户对于不想停机的场景可以借助 SQLite 官方命令行工具 的.backup命令创建一致性备份无需停止应用sqlite3 db/db.sqlite3 .backup /tmp/seerr_db.sqlite3.bak随后把生成的/tmp/seerr_db.sqlite3.bak文件复制到你的目标备份位置即可。.backup命令基于 SQLite 的在线备份 API在 WAL 模式下也能正确复制已提交的事务数据。备份 PostgreSQL 数据库PostgreSQL 场景下可以在不停止 Seerr 应用的情况下完成备份需要同时备份两部分config文件夹重点是其中的settings.json使用pg_dump导出数据库。安装 postgresql-client 后将下面的占位符替换为你的实际值执行pg_dump -U database_user -d database_name -f /tmp/seerr_db.sql:::info 根据你的 PostgreSQL 实例配置可能需要在上述命令中补充以下选项-h, --hostHOSTNAME数据库服务器主机名或 socket 目录-p, --portPORT数据库服务器端口号 :::例如当 Seerr 与 PostgreSQL 分离部署、数据库不在本机时命令通常写成pg_dump -h 192.168.1.10 -p 5432 -U seerr -d seerr -f /tmp/seerr_db.sqlpg_dump生成的是 SQL 文本格式的逻辑备份天然支持跨版本恢复且在线执行不会阻塞 Seerr 的正常读写。恢复恢复的本质是备份的逆过程先把数据库与settings.json放回正确位置再启动应用。下面分别给出两种引擎的恢复步骤。恢复 SQLite将备份的db/db.sqlite3文件恢复到位如有需要同时恢复settings.json。恢复完成后config文件夹结构应当如下. ├── cache -- 可选 ├── db │ └── db.sqlite3 ├── logs -- 可选 └── settings.json -- 可选若想避免重新配置 Seerr 则必须保留恢复文件后启动 Seerr 应用即可。其中cache与logs目录属于可再生的运行期数据非必须恢复而settings.json若缺失Seerr 会退回未配置状态需要重新执行初始化向导。恢复 PostgreSQL安装 PostgreSQL 客户端后使用pg_restore将备份的 SQL 文件恢复到目标数据库替换占位符pg_restore -U database_user -d database_name /tmp/seerr_db.sql:::info 根据你的 PostgreSQL 实例配置可能需要在上述命令中补充以下选项-h, --hostHOSTNAME数据库服务器主机名或 socket 目录-p, --portPORT数据库服务器端口号 :::之后可选恢复settings.json文件。此时config文件夹结构应如下. ├── cache -- 可选 ├── logs -- 可选 └── settings.json -- 可选若想避免重新配置 Seerr 则必须保留注意PostgreSQL 模式下数据库文件位于外部 PostgreSQL 服务器中config文件夹内不包含数据库文件因此目录结构里没有db子目录。数据库与文件都恢复完成后启动 Seerr 应用。备份与恢复的实践要点用 CONFIG_DIRECTORY 统一管理数据目录无论是 Docker 卷挂载还是 Kubernetes PVC都建议将数据目录固定下来。在 docker.mdx 中容器内的数据目录固定为/app/config宿主机通过-v /path/to/appdata/config:/app/config或命名卷挂载。从 appDataVolume.ts 的源码看Seerr 也会在数据目录中写入DOCKER标记文件以区分容器化运行环境。备份时只要对准这个目录就能同时覆盖settings.json与 SQLite 数据库文件。settings.json 的自动兜底备份Seerr 在配置迁移时会自动维护一份settings.old.json备份。相关逻辑位于 server/lib/settings/migrator.ts在应用迁移前先把当前设置写入settings.old.json再执行迁移并写回settings.json。这意味着即使某次迁移出现问题settings.old.json也是可用的回滚素材——手工备份时可以一并纳入保留。恢复顺序与一致性SQLite务必在应用停止状态下恢复db.sqlite3避免 WAL 模式下出现数据库文件与 WAL 文件不一致的情况恢复完成后再启动。PostgreSQL先恢复数据库再恢复settings.json最后启动应用确认DB_TYPEpostgres及DB_HOST、DB_PORT、DB_USER、DB_PASS、DB_NAME等连接参数与新环境一致参考 compose.postgres.yaml 中的变量清单。恢复后应通过 Web UI 抽查设置项、用户列表与历史请求是否完整以验证备份有效性。总结Seerr 的备份对象清晰而精简一个settings.json加上一个数据库SQLite 单文件或 PostgreSQL 逻辑导出。SQLite 场景下可按需选择文件系统快照、停机复制或sqlite3 .backup在线热备PostgreSQL 场景则用pg_dump与pg_restore完成不中断业务的备份与恢复。只要遵循“数据目录固定、settings.json 必备份、恢复前停应用或保证一致性”这三条原则就能在升级、迁移与容灾时高枕无忧。【免费下载链接】seerrOpen-source media request and discovery manager for Jellyfin, Plex, and Emby.项目地址: https://gitcode.com/GitHub_Trending/je/seerr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →