Jellyfin在Ubuntu上的媒体库同步方法
Jellyfin默认不会自动监控媒体文件变动(如新增、删除文件),需通过手动操作触发同步。步骤如下:
登录Jellyfin Web界面,找到目标媒体库(如“电影”“电视剧”),点击右上角的“…”(扩展按钮),选择Scan Library(扫描媒体库)即可同步当前目录下的所有媒体文件;若仅需更新元数据(如影片信息、封面),可选择Refresh Metadata(刷新元数据)。
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-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'"}'
done
替换YOUR_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服务)。/home/ubuntu/downloads)映射到媒体库目录(如/mnt/media),确保下载完成后文件自动同步到媒体库。配置路径:Jellyfin Web界面→“设置”→“下载客户端”→“高级设置”→“远程路径映射”。若媒体文件存储在外部设备(如NAS、U盘),需通过挂载实现同步:
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查看是否挂载成功。docker-compose.yaml中配置卷映射,将外部存储目录映射到容器内的媒体目录,示例如下: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-stopped
重启Docker容器使配置生效:docker-compose down && docker-compose up -d。