如何在centos上备份jellyfin的数据
小樊
35
2025-11-19 22:04:59
备份目标与总体思路
- 在 CentOS 上,Jellyfin 的备份重点是:
- 配置目录 /etc/jellyfin;2) 数据目录 /var/lib/jellyfin(内含数据库,Jellyfin 默认使用 SQLite);3) 可选的 缓存与日志 /var/cache/jellyfin、/var/log/jellyfin;4) 你的 媒体库文件(通常不在系统盘,建议单独长期保留)。Jellyfin 本身不提供一键备份,建议用 tar/rsync 做文件级备份,并按需做 全量/增量/差异 策略与 异地/云端 存储。
手动备份步骤
-
- 停止服务,确保数据一致性
sudo systemctl stop jellyfin
-
- 备份配置与数据(SQLite 数据库位于数据目录)
sudo tar -czvf jellyfin_backup_$(date +%F).tar.gz
/etc/jellyfin /var/lib/jellyfin
-
- 可选:备份缓存与日志
sudo tar -czvf jellyfin_cachelog_$(date +%F).tar.gz
/var/cache/jellyfin /var/log/jellyfin
-
- 启动服务
sudo systemctl start jellyfin
-
- 校验与保留策略
ls -lh jellyfin_backup_*.tar.gz
建议保留最近 7–30 天的备份,按日期命名便于回滚。
自动化与增量备份
- 定时全量备份(示例:每日 2:00)
创建脚本 /usr/local/bin/backup_jellyfin.sh:
#!/usr/bin/env bash
set -e
BACKUP_DIR=“/opt/backups/jellyfin”
DATE=$(date +%F)
mkdir -p “$BACKUP_DIR”
systemctl is-active --quiet jellyfin && systemctl stop jellyfin
tar -czvf “$BACKUP_DIR/jellyfin_${DATE}.tar.gz” /etc/jellyfin /var/lib/jellyfin
systemctl start jellyfin
清理 30 天前
find “$BACKUP_DIR” -name “jellyfin_*.tar.gz” -mtime +30 -delete
加入定时任务:
sudo chmod +x /usr/local/bin/backup_jellyfin.sh
echo “0 2 * * * root /usr/local/bin/backup_jellyfin.sh” | sudo tee /etc/cron.d/backup_jellyfin
- 增量/差异备份(基于 tar 快照)
首次快照(全量)
tar -czvf jellyfin_base.tar.gz -g jellyfin_snap.snar /etc/jellyfin /var/lib/jellyfin
后续增量(基于同一快照文件)
tar -czvf jellyfin_inc_$(date +%F).tar.gz -g jellyfin_snap.snar /etc/jellyfin /var/lib/jellyfin
提示:快照文件(jellyfin_snap.snar)需妥善保存并与对应备份一起归档。
远程与云端备份
- rsync 到远程主机(示例)
rsync -avz --delete -e ssh /opt/backups/jellyfin/ user@backup.example.com:/backup/jellyfin/
- 使用 S3 兼容对象存储(s3fs-fuse 挂载后拷贝)
安装与配置(示例)
sudo yum install -y automake fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel
git clone https://github.com/s3fs-fuse/s3fs-fuse.git
cd s3fs-fuse && ./autogen.sh && ./configure && make && sudo make install
echo “YOUR_ACCESS_KEY:YOUR_SECRET_KEY” | sudo tee /etc/passwd-s3fs >/dev/null
sudo chmod 600 /etc/passwd-s3fs
sudo mkdir -p /mnt/s3
s3fs YOUR_BUCKET /mnt/s3 -o passwd_file=/etc/passwd-s3fs -o url=https://YOUR_S3_ENDPOINT -o use_path_request_style
拷贝备份
cp /opt/backups/jellyfin/jellyfin_*.tar.gz /mnt/s3/
说明:也可使用 rclone 等工具直传到对象存储,流程更简洁。
恢复与验证
- 恢复步骤
- 建议先停止服务:sudo systemctl stop jellyfin
- 解压备份(覆盖前先备份现有目录):
sudo tar -xzvf jellyfin_backup_YYYY-MM-DD.tar.gz -C /
- 启动服务:sudo systemctl start jellyfin
- 登录 Web 管理端检查:用户、媒体库、播放记录、插件是否正常。
- 校验要点
- 配置文件:ls -l /etc/jellyfin
- 数据库文件:ls -l /var/lib/jellyfin/data/jellyfin.db(存在且大小合理)
- 日志:journalctl -u jellyfin -b 或 tail -n 200 /var/log/jellyfin/*.log
- 第三方脚本
也可使用社区脚本(如 Therkelsen/jellyfin_tools)进行备份与恢复,使用前请审阅脚本内容并在测试环境验证。