阅读量:24
Jellyfin在Ubuntu上的媒体库同步方法
一、基础同步操作:手动刷新媒体库
Jellyfin默认不会自动监控媒体文件变动(如新增、删除文件),需通过手动操作触发同步。步骤如下:
登录Jellyfin Web界面,找到目标媒体库(如“电影”“电视剧”),点击右上角的“…”(扩展按钮),选择Scan Library(扫描媒体库)即可同步当前目录下的所有媒体文件;若仅需更新元数据(如影片信息、封面),可选择Refresh Metadata(刷新元数据)。
二、确保文件权限正确:避免同步失败
Jellyfin服务以jellyfin系统用户身份运行,若媒体文件未赋予该用户读取权限,会导致同步时无法识别文件。解决方法有两种:
- 直接授权给jellyfin用户(简单但灵活性低):
运行命令sudo chown -R jellyfin:jellyfin /your/media/folder(将/your/media/folder替换为实际媒体目录路径),将媒体目录所有权转移给jellyfin用户。 - 创建共享用户组(推荐,灵活可控):
- 创建媒体用户组:
sudo groupadd media; - 将
jellyfin用户和你日常上传文件的Ubuntu用户(如ubuntu)加入该组:sudo usermod -aG media jellyfin、sudo usermod -aG media ubuntu; - 修改媒体目录权限:
sudo chmod -R 775 /your/media/folder、sudo chown -R :media /your/media/folder(确保组用户有读写权限)。
- 创建媒体用户组:
三、自动同步配置:解决实时性问题
若需实现新文件自动同步,可通过以下两种方式配置:
- 使用inotify工具监控文件变动(适合Ubuntu服务器):
安装inotify-tools:sudo apt install inotify-tools;
创建监控脚本(如/usr/local/bin/jellyfin_sync.sh),内容如下:替换#!/bin/bash MEDIA_DIR="/your/media/folder" inotifywait -m -r -e create,delete,modify --format '%w%f' "$MEDIA_DIR" | while read FILE do echo "Detected change in $FILE, refreshing Jellyfin library..." curl -X POST http://localhost:8096/api/v3/library/refresh -H "X-Emby-Token: YOUR_ADMIN_TOKEN" -H "Content-Type: application/json" -d '{"Path":"'$MEDIA_DIR'"}' doneYOUR_ADMIN_TOKEN为Jellyfin管理员API令牌(在Web界面“用户”→“管理员”→“编辑”→“API令牌”中获取),并赋予脚本执行权限:sudo chmod +x /usr/local/bin/jellyfin_sync.sh;
设置脚本开机自启:将/usr/local/bin/jellyfin_sync.sh &添加到/etc/rc.local文件中(需提前安装rc-local服务)。 - 通过下载客户端远程路径映射(适合配合Radarr/Sonarr自动下载场景):
若使用Radarr或Sonarr自动下载影视文件,需在Jellyfin设置中配置远程路径映射,将下载目录(如/home/ubuntu/downloads)映射到媒体库目录(如/mnt/media),确保下载完成后文件自动同步到媒体库。配置路径:Jellyfin Web界面→“设置”→“下载客户端”→“高级设置”→“远程路径映射”。
四、挂载外部存储同步:扩展媒体库容量
若媒体文件存储在外部设备(如NAS、U盘),需通过挂载实现同步:
- 挂载NFS/Samba共享(适合网络存储):
- 安装NFS客户端:
sudo apt install nfs-common; - 创建本地挂载点:
sudo mkdir /mnt/nas_media; - 编辑
/etc/fstab文件,添加NFS共享记录(替换为NAS的IP和共享路径):192.168.1.100:/volume1/media /mnt/nas_media nfs defaults,_netdev 0 0 - 挂载并验证:
sudo mount -a,运行df -h查看是否挂载成功。
- 安装NFS客户端:
- Docker容器挂载(适合Docker部署的Jellyfin):
在docker-compose.yaml中配置卷映射,将外部存储目录映射到容器内的媒体目录,示例如下:重启Docker容器使配置生效:version: '3' services: jellyfin: image: jellyfin/jellyfin container_name: jellyfin volumes: - /mnt/nas_media:/media # 外部存储目录映射到容器内的/media目录 - ./jellyfin/config:/config # 配置文件目录 - ./jellyfin/cache:/cache # 缓存目录 ports: - "8096:8096" restart: unless-stoppeddocker-compose down && docker-compose up -d。