
nowsci/plex-db-syncplex-db-sync是一款用于同步两个Plex服务器数据库观看状态的工具,可同步包括观看时间在内的观看进度信息,适用于系统上的所有用户,且无需额外配置Plex令牌。
适用于需要在多个Plex服务器间保持观看进度一致的场景,例如:
环境准备
安装必要依赖工具:
bashapt-get install sshfs sqlite3
挂载远程数据库
通过sshfs挂载远程Plex服务器的数据库目录至本地:
bashmkdir -p /mnt/sshfs sshfs -o allow_other,IdentityFile=/keys/serverkey -p 22 \ ***:"/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases/" \ /mnt/sshfs
执行同步脚本
下载并运行脚本,指定服务器数据库路径及启停命令:
bashwget [***] chmod +x plex-db-sync ./plex-db-sync \ --plex-db-1 "/mnt/sshfs/com.plexapp.plugins.library.db" \ --plex-start-1 "ssh -oStrictHostKeyChecking=no -i /keys/serverkey *** service plexmediaserver start" \ --plex-stop-1 "ssh -oStrictHostKeyChecking=no -i /keys/serverkey *** service plexmediaserver stop" \ --plex-db-2 "/data/docker/containers/plex/config/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db" \ --plex-start-2 "service plexmediaserver start" \ --plex-stop-2 "service plexmediaserver stop"
注意:脚本会短暂停止并重启Plex服务以应用更新,通常不会影响正在播放的客户端(首次大规模同步可能有短暂影响)。
通过docker-compose实现容器化部署,适用于本地与远程服务器同步场景:
yamlversion: '2' services: plex-db-sync: image: nowsci/plex-db-sync container_name: plex-db-sync volumes: - /etc/localtime:/etc/localtime:ro # 同步系统时区 - ./plex-db-sync/sshkey:/sshkey # SSH密钥挂载 - /docker/plex/Library/Application Support/Plex Media Server/Plug-in Support/Databases/:/mnt/DB2 # 本地数据库路径 cap_add: - SYS_ADMIN # 允许文件系统挂载 devices: - /dev/fuse # 提供fuse设备支持 security_opt: - apparmor:unconfined # 禁用AppArmor限制 environment: - CRON=0 4 * * * # 每天凌晨4点执行同步 - S1_SSH_KEY=/sshkey # 远程服务器SSH密钥路径 - S1_SSH_USER=root # 远程服务器SSH用户 - S1_SSH_HOST=hostname # 远程服务器主机名/IP - S1_SSH_PORT=22 # 远程服务器SSH端口 - S1_SSH_PATH=/docker/plex/Library/Application Support/Plex Media Server/Plug-in Support/Databases # 远程数据库路径 - S1_START=ssh -oStrictHostKeyChecking=no -i /sshkey root@hostname 'cd /docker; docker-compose up -d plex' # 远程Plex启动命令 - S1_STOP=ssh -oStrictHostKeyChecking=no -i /sshkey root@hostname 'cd /docker; docker-compose stop plex' # 远程Plex停止命令 - S2_DB_PATH=/mnt/DB2 # 本地数据库路径 - S2_START=cd /docker; docker-compose up -d plex # 本地Plex启动命令 - S2_STOP=cd /docker; docker-compose stop plex # 本地Plex停止命令 restart: always
| 命令行参数 | Docker变量 | 描述 |
|---|---|---|
--backup <true/false> | BACKUP | 执行SQL操作前是否创建数据库备份 |
--debug <true/false> | DEBUG | 是否输出调试信息 |
--dry-run <true/false> | DRYRUN | 仅模拟同步操作,不实际修改数据库 |
--plex-db-(1/2) | S(1/2)_DB_PATH | 服务器数据库路径(脚本模式为文件路径,Docker模式为目录路径) |
--plex-start-(1/2) | S(1/2)_START | 启动对应Plex服务器的命令 |
--plex-stop-(1/2) | S(1/2)_STOP | 停止对应Plex服务器的命令 |
--nocomparedb <true/false> | n/a | 是否跳过Plex服务器版本数据库比较 |
| n/a | CRON | 定时同步任务表达式(默认:0 4 * * *,每天凌晨4点) |
| n/a | INITIALRUN | 容器启动时是否在定时任务前先执行一次同步 |
| n/a | S(1/2)_SSH_KEY | SSH身份验证密钥文件路径 |
| n/a | S(1/2)_SSH_USER | SSH连接用户名 |
| n/a | S(1/2)_SSH_HOST | SSH服务器主机名/IP地址 |
| n/a | S(1/2)_SSH_PORT | SSH服务端口 |
| n/a | S(1/2)_SSH_PATH | SSH服务器上的数据库目录路径 |


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务