ubuntu

Jellyfin在Ubuntu上的媒体库如何同步

小樊
36
2025-11-11 09:06:35
栏目: 智能运维

Jellyfin在Ubuntu上的媒体库同步方法

一、基础同步操作:手动刷新媒体库

Jellyfin默认不会自动监控媒体文件变动(如新增、删除文件),需通过手动操作触发同步。步骤如下:
登录Jellyfin Web界面,找到目标媒体库(如“电影”“电视剧”),点击右上角的“…”(扩展按钮),选择Scan Library(扫描媒体库)即可同步当前目录下的所有媒体文件;若仅需更新元数据(如影片信息、封面),可选择Refresh Metadata(刷新元数据)。

二、确保文件权限正确:避免同步失败

Jellyfin服务以jellyfin系统用户身份运行,若媒体文件未赋予该用户读取权限,会导致同步时无法识别文件。解决方法有两种:

  1. 直接授权给jellyfin用户(简单但灵活性低):
    运行命令sudo chown -R jellyfin:jellyfin /your/media/folder(将/your/media/folder替换为实际媒体目录路径),将媒体目录所有权转移给jellyfin用户。
  2. 创建共享用户组(推荐,灵活可控):
    • 创建媒体用户组:sudo groupadd media
    • jellyfin用户和你日常上传文件的Ubuntu用户(如ubuntu)加入该组:sudo usermod -aG media jellyfinsudo usermod -aG media ubuntu
    • 修改媒体目录权限:sudo chmod -R 775 /your/media/foldersudo chown -R :media /your/media/folder(确保组用户有读写权限)。

三、自动同步配置:解决实时性问题

若需实现新文件自动同步,可通过以下两种方式配置:

  1. 使用inotify工具监控文件变动(适合Ubuntu服务器):
    安装inotify-toolssudo 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服务)。
  2. 通过下载客户端远程路径映射(适合配合Radarr/Sonarr自动下载场景):
    若使用Radarr或Sonarr自动下载影视文件,需在Jellyfin设置中配置远程路径映射,将下载目录(如/home/ubuntu/downloads)映射到媒体库目录(如/mnt/media),确保下载完成后文件自动同步到媒体库。配置路径:Jellyfin Web界面→“设置”→“下载客户端”→“高级设置”→“远程路径映射”。

四、挂载外部存储同步:扩展媒体库容量

若媒体文件存储在外部设备(如NAS、U盘),需通过挂载实现同步:

  1. 挂载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查看是否挂载成功。
  2. Docker容器挂载(适合Docker部署的Jellyfin):
    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

0
看了该问题的人还看了