温馨提示×

jellyfin在centos上的备份恢复怎么做

小樊
32
2025-12-29 06:06:28
栏目: 智能运维

Jellyfin 在 CentOS 上的备份与恢复

一 准备与原则

  • 备份前先停止服务,避免数据库写入导致不一致:sudo systemctl stop jellyfin
  • 明确需要备份的数据范围:
    • 配置与数据库:/var/lib/jellyfin(包含数据库与插件等)。
    • 缓存(可选,可重建):/var/cache/jellyfin
    • 媒体库文件:你的媒体目录(如 /media、/mnt 下挂载盘等,通常不随备份包携带,恢复时指向原路径或新路径)。
  • 选择备份方式:本地归档(tar/rsync)、远程同步(rsync)、或对象存储(S3 挂载)。
  • 备份完成后务必做一次恢复演练,验证可用性与完整性。

二 本机备份步骤

  • 方式 A(推荐)tar 归档
    1. 停止服务:sudo systemctl stop jellyfin
    2. 打包配置与数据:
      tar -czvf jellyfin_backup_$(date +%F).tar.gz -C /var/lib/jellyfin .
      如需连同缓存:tar -czvf jellyfin_backup_$(date +%F).tar.gz -C /var/lib/jellyfin . -C /var/cache/jellyfin .
    3. 启动服务:sudo systemctl start jellyfin
  • 方式 B rsync 增量同步到本地或远程
    • 本地目录:
      rsync -avz /var/lib/jellyfin/ /backup/jellyfin/
    • 远程服务器:
      rsync -avz -e ssh /var/lib/jellyfin/ user@remote:/backup/jellyfin/
  • 方式 C 同步到 S3(对象存储)
    1. 安装 s3fs-fuse 并配置密钥(示例):
      sudo yum install -y gcc-c++ git libcurl-devel libxml2-devel make openssl-devel fuse-devel
      git clone https://github.com/s3fs-fuse/s3fs-fuse.git && cd s3fs-fuse && ./autogen.sh && ./configure && make && sudo make install
      echo “YOUR_S3_ACCESS_KEY:YOUR_S3_SECRET_KEY” | sudo tee /etc/passwd-s3fs >/dev/null
      sudo chmod 600 /etc/passwd-s3fs
    2. 挂载存储桶并拷贝:
      sudo mkdir -p /mnt/s3bucket
      sudo s3fs YOUR_BUCKET /mnt/s3bucket -o passwd_file=/etc/passwd-s3fs -o url=https://YOUR_S3_ENDPOINT -o use_path_request_style
      cp jellyfin_backup_$(date +%F).tar.gz /mnt/s3bucket/
  • 说明:Jellyfin 本身不提供内置的一键备份功能,上述为通用且可靠的手动/脚本化做法。

三 本机恢复步骤

  • 方式 A 从 tar 包恢复
    1. 建议先停止服务:sudo systemctl stop jellyfin
    2. 清空或重命名旧目录(谨慎操作):
      sudo mv /var/lib/jellyfin /var/lib/jellyfin.bak_$(date +%F)
    3. 解压备份:
      sudo mkdir -p /var/lib/jellyfin
      sudo tar -xzvf jellyfin_backup_YYYY-MM-DD.tar.gz -C /var/lib/jellyfin
    4. 修正权限(Jellyfin 运行用户通常为 jellyfin:jellyfin):
      sudo chown -R jellyfin:jellyfin /var/lib/jellyfin

      如包含缓存也恢复:sudo chown -R jellyfin:jellyfin /var/cache/jellyfin

    5. 启动服务:sudo systemctl start jellyfin
  • 方式 B 从 rsync 或 S3 恢复
    • rsync 拉回:rsync -avz user@remote:/backup/jellyfin/ /var/lib/jellyfin/
    • S3 下载:从挂载点或对象存储下载备份包后按方式 A 解压恢复。
  • 媒体库路径变更时:在 Web 管理后台的 控制台 > 存储 调整媒体库文件夹路径,指向新的实际位置。

四 Docker 部署的备份与恢复

  • 备份
    1. 停止容器:docker stop jellyfin(或 docker-compose stop)
    2. 备份卷数据(假设卷名为 jellyfin_config 与 jellyfin_cache):
      docker run --rm --volumes-from jellyfin -v $(pwd):/backup alpine tar czvf /backup/jellyfin_backup_$(date +%F).tar.gz -C /config . -C /cache .
    3. 如需备份宿主机挂载的媒体目录:
      tar -czvf media_backup_$(date +%F).tar.gz /path/to/media
  • 恢复
    1. 清理或重命名旧数据卷(谨慎):docker volume rm jellyfin_config(或先备份)
    2. 启动临时容器解压配置:
      docker run --rm -v jellyfin_config:/config -v $(pwd):/backup alpine tar xzvf /backup/jellyfin_backup_YYYY-MM-DD.tar.gz -C /config

      如包含缓存:同样解压到 /cache

    3. 启动服务:docker start jellyfin(或 docker-compose up -d)
    4. 媒体库路径变更:在容器内或 compose 中更新卷挂载路径,并在控制台调整媒体库路径。

五 自动化与注意事项

  • 自动化与异地容灾
    • 使用 rsync 定时任务或系统计划任务(cron)做每日增量备份;
    • 将备份包同步到远程主机或对象存储,保留多份与多年龄段(如近 7/30/90 天)。
  • 校验与演练
    • 定期在测试环境恢复备份,核对数据库、插件、用户与媒体库元数据一致性。
  • 权限与 SELinux
    • 恢复后确保目录属主为 jellyfin:jellyfin;如启用 SELinux,必要时执行:
      sudo restorecon -R /var/lib/jellyfin
  • 升级前必做
    • 任何升级(YUM 或手动)前先完整备份,升级后验证服务与数据可用性。

0