/images/avatar.png

haoyuli

坚果云 + rclone 挂载部署指南(含通知)

本文记录了在 linux 环境下,利用rclone挂载坚果云的部署参考教程。

坚果云 + rclone 挂载部署指南,包含:

  • 自动创建挂载目录(如/mnt/blog /mnt/edu365)

  • 部署service rclone@.service

  • 配置检测脚本 /usr/local/bin/rclone-check.sh

  • 配合 Telegram + msmtp 邮件通知

  • systemd 定时器自动检测 & 重启


🔹 一、安装必要依赖并配置rclone

本教程依赖 fuse 和 msmtp

sudo yum install -y fuse3

sudo yum install -y msmtp

fuse必须安装,否则rclone会报错,msmtp为可选安装,若要邮件通知需安装,本人vps采用msmtp发送邮件通知。

下载rclone至目录/opt/rclone,配置/opt/rclone/rclone.conf:

[edu365]
type   = webdav
url    = https://dav.jianguoyun.com/dav/edu365
vendor = other
user   = 账户
pass   = 密钥

[blog]
type   = webdav
url    = https://dav.jianguoyun.com/dav/blog
vendor = other
user   = 账户
pass   = 密钥

🔹 二、部署 rclone@.service

创建文件 /etc/systemd/system/rclone@.service

[Unit]
Description=Rclone Mount for %i
Documentation=https://rclone.org/commands/rclone_mount/
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root
Group=root

# 自动创建挂载点目录
ExecStartPre=/bin/mkdir -p /mnt/%i

# 挂载命令
ExecStart=/opt/rclone/rclone mount %i:/ /mnt/%i \
  --config /opt/rclone/rclone.conf \
  --vfs-cache-mode=writes \
  --vfs-cache-max-age 30m \
  --vfs-cache-max-size 200M \
  --allow-other \
  --dir-cache-time 5m \
  --poll-interval 30s \
  --timeout 30m \
  --umask 002 \
  --log-file /var/log/rclone-%i.log \
  --log-level INFO

# 停止时卸载
ExecStop=/bin/fusermount -uz /mnt/%i

Restart=on-failure
RestartSec=10
RestartPreventExitStatus=3
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target

启用挂载服务示例:

网盘博客搭建参考简略教程

本文记录了在 CentOS 7 环境下,从零搭建 Hugo Extended + LoveIt 主题 博客,并将文章存储目录放置在 坚果云挂载目录 中参考过程,回忆记录包含所有关键配置,避免踩坑。

关键词:CentOS7 Hugo(Extended) LoveIt主题 坚果云挂载

1. 系统环境说明

项目 说明
系统 CentOS 7 (其他linux版本同样适用)
Hugo Extended 版本(必须支持 SCSS 编译)
主题 LoveIt
文章存储 VPS 本地 + 坚果云挂载目录
访问入口 https://www.edu365.site/
部署模式 hugo server 实时更新

2. 安装基础依赖

yum -y install git wget gcc make golang

注:可在其他centos7环境下安装编译,编译完成后将编译好的二进制hugo版本复制至当前系统

3. 编译并安装 Hugo Extended

git clone https://github.com/gohugoio/hugo.git
cd hugo
go install --tags extended
cp ~/go/bin/hugo /opt/hugo/hugo
chmod +x /opt/hugo/hugo

验证:

hello_world

欢迎来到我的博客! 这里是一篇用于测试和展示主题效果的示例文章。


1.📖 内容格式

📝 本文内容包括:

  • 段落内容
  • 提示框
  • 代码块
  • 列表效果

💡 提示框示例

提示
你可以自由编辑 Markdown 文件来创建文章。
---
title: "hello_world"
date: 2025-11-09
draft: false
description: "无"
tags: ["日常更新"]
categories: ["默认分类"]

---
## 标题
--正文内容
---

2.🔄 博客备份

#!/bin/bash
[root@linux ~]# crontab -l
0 4 * * * /root/send-blog-backup.sh >/dev/null 2>&1

send-blog-backup.sh

#!/bin/bash

# -----------------------------
# 配置
# -----------------------------
BACKUP_DIR=~/blog-backups
SOURCE_DIR=/opt/blog
TO="i@protonmail.com" 
FROM="i@gmail.com" 
SUBJECT="blog backup $(date +%Y%m%d)"
ACCOUNT="google"   # msmtp 配置的谷歌邮箱账户
KEEP_DAYS=7
ZIP_PASSWORD="你的密码"  # 设置压缩包密码

# -----------------------------
# 创建备份目录
# -----------------------------
mkdir -p "$BACKUP_DIR"

# -----------------------------
# 给 md 文件加 UTF-8 BOM(临时目录)
# -----------------------------
TMP_DIR=$(mktemp -d)
cp -r "$SOURCE_DIR"/* "$TMP_DIR"/

# 为每个 md 文件加 BOM
for f in "$TMP_DIR"/*.md; do
    if [ -f "$f" ]; then
        # 检查文件是否已经有 BOM
        if ! head -c 3 "$f" | grep -q $'\xEF\xBB\xBF'; then
            # 给文件加 BOM
            (echo -ne '\xEF\xBB\xBF'; cat "$f") > "${f}.bom" && mv "${f}.bom" "$f"
        fi
    fi
done

# -----------------------------
# 生成 ZIP 压缩包
# -----------------------------
BACKUP_FILE="$BACKUP_DIR/blog-content-$(date +%Y%m%d).zip"
cd "$TMP_DIR"
zip -r -P "$ZIP_PASSWORD" "$BACKUP_FILE" ./*

# -----------------------------
# 获取备份信息
# -----------------------------
BACKUP_SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
BACKUP_TIME=$(date +"%Y-%m-%d %H:%M:%S")

BODY="备份已完成:
路径:$BACKUP_FILE
大小:$BACKUP_SIZE
创建时间:$BACKUP_TIME
压缩密码已设置。"

# -----------------------------
# 发送邮件(msmtp + base64)
# -----------------------------
BOUNDARY="ZZ_/afg6432dfgkl.94531q"

(
echo "From: ${FROM}"
echo "To: ${TO}"
echo "Subject: ${SUBJECT}"
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/mixed; boundary=\"$BOUNDARY\""
echo
echo "--$BOUNDARY"
echo "Content-Type: text/plain; charset=UTF-8"
echo "Content-Transfer-Encoding: 7bit"
echo
echo "$BODY"
echo
echo "--$BOUNDARY"
echo "Content-Type: application/zip; name=\"$(basename $BACKUP_FILE)\""
echo "Content-Transfer-Encoding: base64"
echo "Content-Disposition: attachment; filename=\"$(basename $BACKUP_FILE)\""
echo
openssl base64 -A -in "$BACKUP_FILE" | fold -w 76
echo
echo "--$BOUNDARY--"
) | msmtp -a "$ACCOUNT" "$TO"

# -----------------------------
# 删除临时目录
# -----------------------------
rm -rf "$TMP_DIR"

# -----------------------------
# 删除 7 天前的旧备份
# -----------------------------
find "$BACKUP_DIR" -type f -name "blog-content-*.zip" -mtime +$KEEP_DAYS -exec rm -f {} \;

3.📝 常用 Emoji

Emoji 用途 示例
1️⃣ 写作与文章相关
📝 笔记、文章 📝 今日笔记
📖 阅读、教程 📖 阅读教程
✍️ 编辑、创作 ✍️ 编辑文章
📰 新闻、更新 📰 最新动态
2️⃣ 任务与状态
已完成 ✅ 已完成部署
失败 ❌ 操作失败
🔄 更新 🔄 内容更新
等待/进度 ⏳ 等待完成
🎯 目标 🎯 本周目标
3️⃣ 提示与注意事项
⚠️ 警告 ⚠️ 注意事项
💡 提示、小技巧 💡 小技巧
📌 重点、收藏 📌 本文重点
🔔 提醒 🔔 重要通知
4️⃣ 热点与推荐
🔥 热门 🔥 热门文章
🌟 推荐 🌟 推荐阅读
💎 精选 💎 精选内容
星标 ⭐ 五星推荐
5️⃣ 技术与工具
🛠 工具、配置 🛠 配置工具
🧩 插件、模块 🧩 插件安装
⚙️ 系统设置 ⚙️ 系统配置
💻 编程、开发 💻 编写代码
🖥 服务器、电脑 🖥 部署环境
6️⃣ 社交与交流
💬 评论、讨论 💬 留言讨论
📩 邮件、联系 📩 联系我
🔗 链接、参考 🔗 参考资料
🤝 合作 🤝 合作伙伴
7️⃣ 发布与进度
🚀 发布、上线 🚀 部署完成
🗓 时间、日程 🗓 发布日期
耗时 ⏱ 耗时统计
📊 数据、统计 📊 数据分析