温馨提示×

ubuntu jellyfin备份与恢复

小樊
64
2025-12-24 18:55:10
栏目: 智能运维

Ubuntu 下 Jellyfin 备份与恢复

一 备份策略与准备

  • 备份范围建议包含:
    1. 配置与数据库数据目录:通常为 /var/lib/jellyfin
    2. 媒体库文件:即你的电影、剧集等实际文件目录;
    3. 可选:自定义 Nginx/Apache 配置、SSL 证书、系统级服务文件等。
  • 操作前准备:
    • 确认 Jellyfin 运行用户与目录权限(常见为 jellyfin:jellyfin)。
    • 准备外部磁盘/NAS/对象存储作为备份目的地。
    • 建议先停止 Jellyfin 服务,避免备份过程中出现写入不一致(特别是数据库/缓存文件)。
    • 记录关键路径与版本信息,便于跨机器或跨版本恢复时核对。
  • 常用工具:tar、rsync(本地/远程/增量),如需云存储可挂载 S3 后拷贝归档。

二 原生安装的系统服务备份与恢复

  • 备份步骤
    1. 停止服务
      sudo systemctl stop jellyfin
    2. 打包数据目录(含配置与数据库)
      sudo tar -czvf jellyfin_backup_$(date +%F).tar.gz -C /var/lib/jellyfin .
    3. 备份媒体库(示例路径,请替换为你的实际路径)
      sudo rsync -av --delete /path/to/media /path/to/backup/media_$(date +%F)
    4. 如需远程/云端备份,可将归档拷贝到外部介质或挂载的 S3 存储后上传。
  • 恢复步骤
    1. 先停止服务
      sudo systemctl stop jellyfin
    2. 恢复数据目录(注意末尾的点,表示解包到当前目录)
      sudo tar -xzf jellyfin_backup_YYYY-MM-DD.tar.gz -C /var/lib/jellyfin
    3. 恢复媒体库
      sudo rsync -av --delete /path/to/backup/media_YYYY-MM-DD/ /path/to/media
    4. 修正权限(以实际运行用户为准)
      sudo chown -R jellyfin:jellyfin /var/lib/jellyfin /path/to/media
    5. 启动服务并验证
      sudo systemctl start jellyfin
      sudo systemctl status jellyfin
  • 说明
    • 使用 tar 可一次性归档与压缩;使用 rsync 便于增量同步远程备份
    • 若仅做小变更,可定期用 rsync 对媒体库做增量备份,对配置/数据库做全量归档

三 Docker 部署的备份与恢复

  • 备份步骤
    1. 停止容器
      docker stop jellyfin
    2. 备份配置目录(假设容器名为 jellyfin,挂载到宿主机的 /path/to/config
      docker cp jellyfin:/config /path/to/backup/config_$(date +%F)
    3. 备份媒体库(宿主机路径)
      rsync -av --delete /path/to/media /path/to/backup/media_$(date +%F)
  • 恢复步骤
    1. 如需全新部署,先启动一个仅挂载配置的临时容器以校验配置可用性(可选)
      docker run --name jellyfin-tmp -v /path/to/backup/config_YYYY-MM-DD:/config -p 8096:8096 --rm jellyfin/jellyfin
    2. 启动正式容器并挂载已备份的配置与媒体库
      docker run -d --name jellyfin
      -p 8096:8096
      -v /path/to/backup/config_YYYY-MM-DD:/config
      -v /path/to/media:/media
      jellyfin/jellyfin
    3. 访问 http://服务器IP:8096 验证用户、插件、播放记录与媒体库是否完整。

四 自动化与云备份示例

  • 本地定时归档脚本(系统服务)
    • 示例(每日 2:30 打包 /var/lib/jellyfin 到 /backup):
      sudo tee /usr/local/bin/jellyfin-backup.sh >/dev/null <<‘EOF’ #!/usr/bin/env bash set -e BACKUP_DIR=“/backup/jellyfin” DATE=$(date +%F) mkdir -p “$BACKUP_DIR” systemctl stop jellyfin || true tar -czvf “$BACKUP_DIR/jellyfin_data_$DATE.tar.gz” -C /var/lib/jellyfin . systemctl start jellyfin || true

      可选:保留最近 7 天

      find “$BACKUP_DIR” -name “jellyfin_data_*.tar.gz” -mtime +7 -delete EOF sudo chmod +x /usr/local/bin/jellyfin-backup.sh echo “30 2 * * * root /usr/local/bin/jellyfin-backup.sh” | sudo tee /etc/cron.d/jellyfin-backup
  • 云端对象存储(S3)示例
    • 挂载 S3 后拷贝归档:
      sudo apt install -y s3fs-fuse echo “YOUR_S3_ACCESS_KEY:YOUR_S3_SECRET_KEY” | sudo tee /etc/passwd-s3fs sudo chmod 600 /etc/passwd-s3fs sudo mkdir -p /mnt/s3/jellyfin sudo mount -t s3fs YOUR_BUCKET /mnt/s3/jellyfin -o passwd_file=/etc/passwd-s3fs -o url=https://YOUR_BUCKET_ENDPOINT -o use_path_request_style cp /backup/jellyfin_data_*.tar.gz /mnt/s3/jellyfin/
    • 说明:S3 适合异地/长期留存灾备场景。

五 验证与常见问题

  • 验证要点
    • 登录 Web 管理端,核对:用户与权限、插件列表与启用状态播放记录/继续观看媒体库扫描结果元数据
    • 抽查若干影片的字幕、音轨、海报/背景是否正常。
    • 若使用 Nginx/反向代理/HTTPS,检查证书与端口转发是否生效。
  • 常见问题与处理
    • 恢复后页面空白或 500:优先检查 /var/lib/jellyfin 与媒体库目录的所有者/权限是否为 jellyfin:jellyfin,以及 SELinux/AppArmor 是否拦截。
    • 插件异常:在恢复配置后,逐个禁用/重新启用插件,必要时清理插件缓存目录后再重启。
    • 媒体库路径变化:在管理端执行库扫描,或在高级设置中调整媒体库根路径后重新扫描。
    • 版本差异:跨大版本恢复时,建议先升级到目标版本再恢复,减少数据库迁移风险。

0