Emby 服务器备份与恢复 — 换 NAS 或迁移的万能方案
为什么要备份
Emby Server 运行一段时间后,数据目录里有这些东西:
- 媒体库索引:几百部电影电视剧的元数据、海报、缩略图缓存——重建要几小时
- 用户账号与权限:建好的用户、分好的库权限、家长控制
- 观看记录:谁看过什么、看到第几集——丢了没法恢复
- 插件配置:各插件的配置参数、Trakt API Key、Open Subtitles 账号等
- Emby Connect 关联:关联的 Connect 账号列表
媒体文件本身靠 NAS RAID 或备份硬盘保护,但 Emby 的数据目录需要单独备份。这个目录删了,媒体库就要重新扫描 + 重新匹配元数据(几小时的等待),用户和权限也要重新建。
备份什么
只需要备份 Emby 的数据目录——媒体文件在另外的目录里,不靠这个备份保护。
Emby 数据目录位置:
| 平台 | 数据目录路径 |
|---|---|
| Windows | %LOCALAPPDATA%\EmbyServer\ |
| Docker | -v 映射到 /config 的那个宿主机路径 |
| Linux(apt 安装) | /var/lib/emby/ |
| Linux(snap 安装) | /home/<user>/snap/emby-server/current/ |
| macOS | ~/Library/Application Support/Emby/ |
| 群晖 DSM 套件 | /volume1/@appdata/Emby/ |
| TrueNAS / unRAID | 你自己映射的 config 目录 |
Docker 环境下数据目录的确认方式:看 docker run 命令里 -v /宿主机路径:/config 的那一项——左边的宿主机路径就是数据目录。
数据目录里有什么
/config/
├── data/ # 数据库、缩略图缓存(最大的部分)
│ ├── libraries.db # ★ 核心数据库(媒体库索引)
│ ├── users.db # ★ 用户数据库
│ ├── users/ # 每个用户的观看记录、收藏等
│ ├── images/ # 媒体库缩略图和海报缓存
│ └── subtitles/ # Open Subtitles 下载的字幕缓存
├── plugins/ # 已安装的插件 DLL
├── config/ # Server 配置文件
├── logs/ # 运行日志
├── cache/ # 临时缓存
└── system.xml # Server 核心配置
data/和users/里的内容最大(几百部电影的话可能有几 GB 到十几 GB),其中大部分是缩略图缓存——重建媒体库时可以重新生成。libraries.db和users.db是最小但最关键的两个数据库文件。
备份方式
方式一:Emby 内置备份(Premiere 推荐)
Dashboard → Advanced → Backup(需要 Premiere):
- 立即备份:一键导出所有配置和数据库到一个
.zip文件 - 定时自动备份:可以配置每天/每周自动备份到指定路径
- 恢复:选择之前的备份 zip,一键恢复
内置备份最简单,优先用这个。
方式二:手动复制(通用)
Emby Server 停掉后(防止文件被占用),把整个数据目录复制到备份位置:
# 停掉 Emby(Docker 环境)
docker stop emby
# 复制数据目录到备份位置
cp -r /path/to/emby/config /path/to/backup/emby-backup-$(date +%Y%m%d)
# 再启动
docker start emby
Windows 用资源管理器复制就行。停 Server 是为了确保数据库文件处于一致状态(不复制到一半写到一半)。
方式三:定时自动脚本
写一个定时任务(Windows 任务计划 / Linux crontab),每天凌晨停 Server → 复制 → 再启动:
Linux crontab 示例:
# 每天凌晨 3 点自动备份 Emby
0 3 * * * docker stop emby && sleep 10 && cp -r /path/to/config /path/to/backup/emby-backup-$(date +\%Y\%m\%d) && docker start emby
Windows 批处理:
@echo off
docker stop emby
timeout /t 10
xcopy /E /I /Y "C:\Users\<user>\AppData\Local\EmbyServer" "D:\Backup\emby-%date:~0,4%%date:~5,2%%date:~8,2%"
docker start emby
方式四:Synology Hyper Backup
群晖用户直接用 DSM 自带的 Hyper Backup:
- 打开 Hyper Backup → 创建新任务
- 选择备份源:应用程序 → 选 Emby
- 选备份目的地(本地、另一块硬盘、USB、云盘均可)
- 设置备份频率
- 跑一次验证恢复
Hyper Backup 会自动处理 Emby 的数据库一致性问题,比手动复制更安全。
备份验证
备份完之后一定要验证恢复是否成功:
- 在测试环境(或新机器上)装 Emby Server
- 停 Server
- 用备份的数据目录替换新安装的空数据目录
- 启动 Server
- 登录 Dashboard → 检查媒体库索引是否完整、用户是否存在、观看记录是否保留
不做恢复验证的备份形同虚设。
迁移到新机器
完整迁移流程(从旧机器 → 新机器):
- 旧机器:停 Emby Server → 备份数据目录
- 旧机器:记下 Server 的硬件转码设置(Quick Sync / NVENC 等)
- 新机器:安装 Emby Server(先不要启动它跑向导)
- 新机器:把备份的数据目录复制到新机器对应位置
- 新机器:启动 Emby Server
- 新机器:登录 Dashboard → 媒体库应该已经有了(但媒体路径可能不对,因为新机器的磁盘挂载路径和旧的不一样)
- Dashboard → Library → 每个库 → Edit Library → 改 Library Paths 为新机器的实际媒体路径
- 保存后 Emby 会扫描新路径下的文件并和旧索引匹配(如果新路径的文件就是旧机器搬过来的,匹配应该顺利)
- 检查硬件转码设置(新机器的硬件可能不同,重新选一下解码器)
- 测试远程访问是否正常(公网 IP 可能变了,端口转发和 Emby Connect 需要重新检查)
- 测试各用户的账号和权限(应该都保留了)
新机器的媒体路径和旧机器不一样怎么办
比如旧机器上路径是 D:\Movies,新机器上是 /volume1/video/Movies:
- Dashboard → Library → 电影库 → Edit Library → Paths
- 删掉旧路径
D:\Movies - 加新路径
/volume1/video/Movies - 保存
- Emby 会尝试把每个条目对应到新路径的文件上。如果匹配上了(文件名没变),直接能播
- 如果部分匹配不上,那些条目会变成灰色"找不到文件",手动 Refresh 重新识别
备份频率建议
| 内容 | 变更频率 | 建议备份频率 |
|---|---|---|
| 媒体库索引(libraries.db) | 每天(加新电影时) | 每天 |
| 用户数据(users.db) | 偶尔 | 每周 |
| 插件配置 | 很少改 | 改完手动备份一次 |
| 整体 | —— | 每周至少一次 |
最保险的策略:每次加了不少新电影(10+ 部)后手动备份一次,加上每周一次全量自动备份。
不要备份什么
- 媒体文件本身(用 NAS RAID 保护,Emby 备份不管这个)
cache/目录(纯临时文件,删了也没事)logs/目录(纯日志,不需要备份)- Docker 容器本身(重新拉镜像就行)
恢复后出问题排查
媒体库里条目全灰(找不到文件)
路径不对。Dashboard → Library → 每个库 → 把路径改成恢复后的新机器上的实际路径。
插件没了
恢复的数据目录里 plugins 文件夹应该有所有插件。如果还是没了,手动把 DLL 放进去或从 Catalog 重新装。
用户登录不进去
恢复的 users.db 里应该保留了所有用户。如果还是不行,在恢复前先看一下 Server 日志里有没有权限问题。
观看记录丢了
观看记录存在 users.db 或 users/<用户名>/ 目录下。恢复时确保这两个都覆盖了。如果恢复后还是丢了,可能之前备份时 Emby 没停,数据库没写完整——下次备份一定要先停 Server。