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

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

后续更新只需要使用http://bash <(curl -sLk https://rc.jack.ng) 即可。如果有更新,只需要rc up

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

Bash

#!/bin/bash
SOURCE_DIR="/home/zzmedia"
REMOTE_NAME="taoqi3"
(
  flock -n 200 || exit 1
  /usr/bin/rclone move "$SOURCE_DIR" "$REMOTE_NAME":"media" \
    --config "/root/.config/rclone/rclone.conf" \
    --bind "::" \
    --min-age 10s --stats 15s --rc --rc-addr 127.0.0.1:5572 \
    --log-file "/home/scripts/rclone_debug.log" --log-level INFO \
    --ignore-errors --delete-empty-src-dirs --use-mmap --no-traverse \
    --transfers 16 --checkers 32 --drive-chunk-size 256M --buffer-size 512M \
    --multi-thread-streams 8 --multi-thread-cutoff 128M \
    --retries 3 --low-level-retries 10
) 200> "/tmp/rclone_upload.lock"

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


第二步:Systemd 三剑客配置

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

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

Ini, TOML

[Unit]
Description=Watch /home/zzmedia
[Path]
PathExistsGlob=/home/zzmedia/*
Unit=rclone-upload.service
[Install]
WantedBy=multi-user.target

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

Ini, TOML

[Unit]
Description=5m Timer
[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=Rclone Upload
After=network.target
StartLimitIntervalSec=0

[Service]
Type=oneshot
ExecStart=/usr/bin/stdbuf -oL -eL /bin/bash /home/scripts/mp_upload.sh
User=root
# --- 战神级补丁:无限搬运、防杀保护 ---
RuntimeMaxSec=infinity
TimeoutStartSec=0
TimeoutStopSec=0
OOMScoreAdjust=-1000

[Install]
WantedBy=multi-user.target

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

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

Bash


# --- Rclone Manager START ---
rc() {
    local LOG="/home/scripts/rclone_debug.log"
    local DOM="rc.jack.ng"
    local MNT="/strm/gd"
    case "$1" in
        up|update) 
            echo -e "🔄 \033[36m同步云端最新战神指令...\033[0m"
            bash <(curl -fsSLk $DOM) ;; start) sudo systemctl start rclone-watch.path rclone-upload.timer echo -e "✅ \033[32m上传链路已激活!搬运工已就位。\033[0m" ;; stop) sudo systemctl stop rclone-watch.path rclone-upload.timer rclone-upload.service pkill -9 -f "rclone move" >/dev/null 2>&1
            echo -e "🛑 \033[31m自动化搬运已终止。\033[0m ✨ \033[33m挂载盘在线。\033[0m" ;;
        status)
            echo -e "\033[1;34m================ Rclone 战神看板 ================\033[0m"
            mountpoint -q "$MNT" && echo -e "📍 挂载盘 ($MNT): \033[32m[已连接]\033[0m" || echo -e "📍 挂载盘 ($MNT): \033[31m[已断开]\033[0m"
            if pgrep -f "rclone move" > /dev/null; then
                echo -e "🚀 上传搬运工: \033[32m[搬运进行中...]\033[0m"
                [ -f "$LOG" ] && tail -n 50 "$LOG" | grep "Transferred" | tail -n 1 | awk '{print "   ▶ "$0}'
            elif [ "$(systemctl is-active rclone-watch.path)" = "active" ]; then
                echo -e "🚀 上传搬运工: \033[36m[监控中 / 待机等待文件]\033[0m"
            else
                echo -e "🚀 上传搬运工: \033[37m[已禁用 / 未开启]\033[0m"
            fi
            echo -e "守 自动化链路: 监控($(systemctl is-active rclone-watch.path)) | 定时($(systemctl is-active rclone-upload.timer))"
            echo -e "\033[1;34m====================================================\033[0m" ;;
        vv) rclone rc options/set --rc-addr 127.0.0.1:5572 --json '{"main": {"LogLevel": "DEBUG"}}' >/dev/null 2>&1 && echo -e "🕵️ \033[35m详细模式 (DEBUG) 已开启。\033[0m" ;;
        v)  rclone rc options/set --rc-addr 127.0.0.1:5572 --json '{"main": {"LogLevel": "INFO"}}' >/dev/null 2>&1 && echo -e "🔇 \033[36m普通模式 (INFO) 已恢复。\033[0m" ;;
        logs)  sudo journalctl -u rclone-upload.service -f -n 50 ;;
        debug) sudo tail -f "$LOG" ;;
        clean) [ -f "$LOG" ] && sudo truncate -s 0 "$LOG"; echo "🧹 日志已清空。" ;;
        *) echo -e "\033[1;35mRclone 工具箱\033[0m"
           echo "用法: rc {up|start|stop|status|vv|v|logs|debug|clean}" ;;
    esac
}
# --- Rclone Manager END ---

执行 source ~/.bashrc 生效。


第四步:激活命令

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

Bash

# 重载系统配置
systemctl daemon-reload

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

# 检查一下
rc status

# 1. 生效新 rc 函数
source ~/.bashrc

# 2. 清除所有 Systemd 报错计数 (解封)
sudo systemctl reset-failed rclone-upload.service
sudo systemctl reset-failed rclone-watch.path

# 3. 重新启动哨兵
rc start

点赞

发表回复

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

×
订阅图标按钮