MoviePilot + Rclone + Emby 高阶方案:零磁盘残留、极速上传自动化指南进阶版

第一步:优化后的上传脚本

路径: nano /home/scripts/mp_upload.sh 改动点: 缩短了冷却时间,移除了内部日志输出,保留高性能参数。

Bash

#!/bin/bash
# ================= 配置区域 =================
SOURCE_DIR="/home/zzmedia"               # 确保这和 MP 的下载/移动路径一致
REMOTE_NAME="taoqi3"
REMOTE_PATH="media"
CONFIG_FILE="/root/.config/rclone/rclone.conf"
LOCK_FILE="/tmp/rclone_upload.lock"
# ===========================================

(
  # 使用 flock 确保排他性运行,进程死掉锁会自动释放
  flock -n 200 || exit 1

  # 注意:这里去掉了 --log-file,日志会直接流向 Systemd Journal
  /usr/bin/rclone move "$SOURCE_DIR" ${REMOTE_NAME}:"${REMOTE_PATH}" \
    --config "$CONFIG_FILE" \
    --min-age 10s \
    --stats 15s \
    -v \
    --ignore-errors \
    --delete-empty-src-dirs \
    --use-mmap \
    --no-traverse \
    --transfers 16 \
    --checkers 32 \
    --drive-chunk-size 128M \
    --buffer-size 512M \
    --multi-thread-streams 8 \
    --multi-thread-cutoff 128M \
    --retries 3 \
    --low-level-retries 10

) 200> "$LOCK_FILE"

记得赋权:chmod +x /home/scripts/mp_upload.sh


第二步:Systemd 三剑客配置

我们要配置 Path (实时监测)Timer (定时兜底)Service (执行主体)

1. 监控配置:nano /etc/systemd/system/rclone-watch.path

Ini, TOML

[Unit]
Description=Real-time monitor for MP media folder

[Path]
# 改为监测目录非空,对 move 操作更灵敏
DirectoryNotEmpty=/home/zzmedia
Unit=rclone-upload.service

[Install]
WantedBy=multi-user.target

2. 定时配置:nano /etc/systemd/system/rclone-upload.timer

Ini, TOML

[Unit]
Description=5-minute fallback timer for Rclone upload

[Timer]
OnBootSec=1min
OnUnitActiveSec=5min
Unit=rclone-upload.service

[Install]
WantedBy=timers.target

3. 服务配置:nano /etc/systemd/system/rclone-upload.service

Ini, TOML

[Unit]
Description=MoviePilot Rclone Upload Service
After=network.target

[Service]
Type=oneshot
# 这里通过 stdbuf 强制开启行缓冲,保证日志实时性
ExecStart=/usr/bin/stdbuf -oL -eL /bin/bash /home/scripts/mp_upload.sh
User=root

[Install]
WantedBy=multi-user.target

第三步:全新的管理快捷命令 (rc)

将这段代码加入 nano /root/.bashrc。我为你重写了 logs 逻辑,现在它会直接调用 journalctl,看进度非常丝滑。

Bash

# Rclone 自动化管理工具 Pro 版 (V2.0 - 全控模式)
rc() {
    case "$1" in
        start)
            # 启动监控和定时器,开启自动化链路
            sudo systemctl start rclone-watch.path rclone-upload.timer
            echo "✅ 自动化上传已启动:实时监控(Path)与 5 分钟兜底(Timer)已就绪。"
            ;;
        stop)
            # 停止所有相关单元,并强杀残留进程
            sudo systemctl stop rclone-watch.path rclone-upload.timer rclone-upload.service
            sudo pkill -9 rclone
            echo "🛑 自动化上传已全线关闭,所有运行中的 rclone 进程已被强制终止。"
            ;;
        run)
            # 手动执行一次上传任务
            sudo systemctl start rclone-upload.service
            echo "🚀 已手动触发一次立即上传任务。"
            ;;
        status)
            echo "--- 自动化链路状态 ---"
            sudo systemctl status rclone-watch.path rclone-upload.timer
            ;;
        time)
            echo "--- 下次兜底上传时间 ---"
            sudo systemctl list-timers rclone-upload.timer
            ;;
        logs)
            echo "--- 正在实时查看上传日志 (Ctrl+C 退出) ---"
            sudo journalctl -u rclone-upload.service -f -n 50
            ;;
        *)
            echo "用法: rc {start|stop|run|status|time|logs}"
            echo "  1. rc start  - [开启] 实时监控和定时任务"
            echo "  2. rc stop   - [关闭] 停止监控、定时器并强制杀掉所有进程"
            echo "  3. rc run    - [手动] 立即手动跑一次上传"
            echo "  4. rc status - [查看] 监控和定时器是否运行中"
            echo "  5. rc time   - [时间] 查看下次定时器触发时间"
            echo "  6. rc logs   - [日志] 实时流式查看上传进度"
            ;;
    esac
}
    esac
}

执行 source ~/.bashrc 生效。


第四步:激活命令

最后一步,按顺序启动所有组件:

Bash

# 重载系统配置
systemctl daemon-reload

# 启动并开机自启
systemctl enable --now rclone-watch.path
systemctl enable --now rclone-upload.timer

# 检查一下
rc status
点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮