<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>日常更新 on blog</title>
    <link>https://www.haoyuli.cn:1443/tags/%E6%97%A5%E5%B8%B8%E6%9B%B4%E6%96%B0/</link>
    <description>Recent content in 日常更新 on blog</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <managingEditor>i@haoyuli.cn (haoyuli)</managingEditor>
    <webMaster>i@haoyuli.cn (haoyuli)</webMaster>
    <copyright>haoyuli5</copyright>
    <lastBuildDate>Mon, 25 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.haoyuli.cn:1443/tags/%E6%97%A5%E5%B8%B8%E6%9B%B4%E6%96%B0/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>tcp拥塞控制算法协议编译安装记录</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/tcp_ucp-build/</link>
      <pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/tcp_ucp-build/</guid>
      <description>&lt;p&gt;本文记录了从零开始在 &lt;strong&gt;Debian 12&lt;/strong&gt; 编译tcp拥塞控制算法协议，并且确保最终可在 Debian 12 上部署。&#xA;我会按步骤分为 &lt;strong&gt;编译 → 加载 → 确认 → 生效&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-编译模块&#34;&gt;&lt;strong&gt;1️⃣ 编译模块&lt;/strong&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;环境准备&#34;&gt;环境准备&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install build-essential linux-headers-&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;uname -r&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;----------------------------------------------------------&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo yum install gcc make kernel-devel kernel-headers （centos7对应）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;下载源码&#34;&gt;下载源码&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;root@haoyuli ~&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# wget [tcp_ucp-1.0.zip](https://github.com/liulilittle/tcp_ucp/archive/refs/heads/main.zip)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;root@haoyuli ~&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# mv tcp_ucp-1.0.zip /opt/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;root@haoyuli ~&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# cd /opt/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;root@haoyuli opt&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# unzip tcp_ucp-1.0.zip&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;root@haoyuli opt&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# cd tcp_ucp-main/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;root@haoyuli tcp_ucp&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# ls&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docs  LICENSE  Makefile  README.md  tcp_ucp.c&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;生成模块&#34;&gt;生成模块&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@localhost:/opt/tcp_ucp-main# make&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;1&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;: Entering directory &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/usr/src/linux-headers-6.1.0-42-cloud-amd64&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  CC &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;M&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;  /opt/tcp_ucp-main/tcp_ucp.o&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  MODPOST /opt/tcp_ucp-main/Module.symvers&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  CC &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;M&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;  /opt/tcp_ucp-main/tcp_ucp.mod.o&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  LD &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;M&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;  /opt/tcp_ucp-main/tcp_ucp.ko&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  BTF &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;M&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; /opt/tcp_ucp-main/tcp_ucp.ko&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Skipping BTF generation &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; /opt/tcp_ucp-main/tcp_ucp.ko due to unavailability of vmlinux&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;1&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;: Leaving directory &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/usr/src/linux-headers-6.1.0-42-cloud-amd64&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-加载内核模块&#34;&gt;&lt;strong&gt;2️⃣ 加载内核模块&lt;/strong&gt;&lt;/h2&gt;&#xA;&lt;p&gt;insmod tcp_ucp.ko&lt;/p&gt;</description>
    </item>
    <item>
      <title>centos7平台openvz内核编译过程</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/kernel-build/</link>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/kernel-build/</guid>
      <description>&lt;p&gt;本文记录了从零开始在 &lt;strong&gt;CentOS 7&lt;/strong&gt; 搭建开发环境到最终生成你的 &lt;code&gt;kernel&lt;/code&gt; 可执行文件，并且确保最终可在 CentOS 7 上部署。这个流程适合新机器或干净环境。&lt;/p&gt;&#xA;&lt;p&gt;我会按步骤分为 &lt;strong&gt;环境准备 → 配置编译 → 安装 → 引导&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-环境准备&#34;&gt;&lt;strong&gt;1️⃣ 环境准备&lt;/strong&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;更新系统&#34;&gt;更新系统&lt;/h3&gt;&#xA;&lt;p&gt;sudo yum update -y&lt;/p&gt;&#xA;&lt;p&gt;sudo yum groupinstall &amp;ldquo;Development Tools&amp;rdquo; -y&lt;/p&gt;&#xA;&lt;p&gt;sudo yum install epel-release -y&lt;/p&gt;&#xA;&lt;p&gt;sudo yum install wget tar bzip2 make cmake git -y&lt;/p&gt;&#xA;&lt;h3 id=&#34;安装编译内核所需软件&#34;&gt;安装编译内核所需软件&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yum install -y &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;gcc &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;gcc-c++ &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;make &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;ncurses-devel &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;bc &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;bison &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;flex &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;elfutils-libelf-devel &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;perl &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;wget &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;git &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;rpm-build &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;rpmdevtools &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;openssl-devel &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;readline-devel &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;zlib-devel &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;bc &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;libselinux-devel &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;gettext &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;elfutils-devel &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;expat-devel&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解释：&lt;/p&gt;</description>
    </item>
    <item>
      <title>只需两行代码，实现语音转文字（转载）</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/voice-text/</link>
      <pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/voice-text/</guid>
      <description>&lt;p&gt;🚀 只需两行代码，实现语音转文字（Whisper-ctranslate2）&lt;/p&gt;&#xA;&lt;p&gt;这是目前我发现&lt;strong&gt;最快、最简单&lt;/strong&gt;的语音转文字方案之一。&lt;/p&gt;&#xA;&lt;p&gt;一个小时的音频文件，只需要几分钟就可以完成处理，非常适合做字幕、笔记整理、访谈转录等场景。&lt;/p&gt;&#xA;&lt;p&gt;它不仅支持多语言（英语 + 96种语言），还能在&lt;strong&gt;噪音环境&lt;/strong&gt;下保持不错的识别效果，即使口音较重也能处理。&lt;/p&gt;&#xA;&lt;p&gt;最重要的是：&lt;br&gt;&#xA;👉 &lt;strong&gt;完全免费 + 开源&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;我们使用的是 &lt;code&gt;whisper-ctranslate2&lt;/code&gt;，这是基于 OpenAI Whisper 的升级版本（OpenAI 也就是开发 ChatGPT 的公司）。&lt;/p&gt;&#xA;&lt;p&gt;相比原版 Whisper，它的特点是：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;⚡ 速度更快&lt;/li&gt;&#xA;&lt;li&gt;🎯 精度更高&lt;/li&gt;&#xA;&lt;li&gt;🧠 使用更简单&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;-安装第一行代码&#34;&gt;🧩 安装（第一行代码）&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pip install git+https://github.com/Softcatala/whisper-ctranslate2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;-语音转文字第二行代码&#34;&gt;🎧 语音转文字（第二行代码）&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whisper-ctranslate2 audio.mp3 --device cuda --model large-v3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;-翻译成英文英文字幕&#34;&gt;🌍 翻译成英文（英文字幕）&lt;/h1&gt;&#xA;&lt;p&gt;如果你想直接把语音翻译成英文：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whisper-ctranslate2 audio.mp3 --device cuda --model large-v3 --task translate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;-中文识别优化简体--繁体&#34;&gt;🇨🇳 中文识别优化（简体 / 繁体）&lt;/h1&gt;&#xA;&lt;p&gt;简体中文优化：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;whisper-ctranslate2 audio.mp3 --device cuda --model large-v3 --initial_prompt 这是一段中文普通话&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;📦 支持输出格式&lt;/p&gt;&#xA;&lt;p&gt;该工具可以输出多种格式，包括：&lt;/p&gt;&#xA;&lt;p&gt;TXT（纯文本）&#xA;SRT（字幕文件）&#xA;VTT（网页字幕）&#xA;JSON（结构化数据）&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用ShareX上传图片文字等到对象存储（经验分享）</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/sharex-cdn/</link>
      <pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/sharex-cdn/</guid>
      <description>&lt;p&gt;本文记录了在 &lt;strong&gt;windows11&lt;/strong&gt; 平台下使用ShareX软件上传图片、文字等到cloudflare R2对象存储的一些操作步骤。&lt;/p&gt;&#xA;&lt;p&gt;主要分别用 &lt;strong&gt;图片、文字&lt;/strong&gt;结合自定义设置和第三方平台设置进行记录，其他类型的文件可举一反三。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-准备&#34;&gt;&lt;strong&gt;1️⃣ 准备&lt;/strong&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;首先要准备一个cloudflare账号&#34;&gt;首先要准备一个cloudflare账号&lt;/h3&gt;&#xA;&lt;p&gt;在R2对象存储中创建 User API 令牌有权限允许读取、写入和列出特定存储桶中的对象。&lt;/p&gt;&#xA;&lt;p&gt;首次创建记住令牌值（api令牌）、访问密钥 ID（key）、机密访问密钥（secret）、和为 S3 客户端使用管辖权地特定的终结点（endpoint）。&lt;/p&gt;&#xA;&lt;p&gt;创建一个存储桶（例如我创建的名字叫assets）用来存储对象，免费用户选择标准存储（10GB免费）、地区自动存美国即可。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;https://www.haoyuli.cn:1443/svg/loading.min.svg&#34;&#xA;        data-src=&#34;https://cdn.haoyu.app/imgs/2025/12/03/d5e2ad79ff686fae.png&#34;&#xA;        data-srcset=&#34;https://cdn.haoyu.app/imgs/2025/12/03/d5e2ad79ff686fae.png, https://cdn.haoyu.app/imgs/2025/12/03/d5e2ad79ff686fae.png 1.5x, https://cdn.haoyu.app/imgs/2025/12/03/d5e2ad79ff686fae.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;https://cdn.haoyu.app/imgs/2025/12/03/d5e2ad79ff686fae.png&#34;&#xA;        title=&#34;https://cdn.haoyu.app/imgs/2025/12/03/d5e2ad79ff686fae.png&#34; /&gt;&lt;/p&gt;&#xA;&lt;p&gt;由于本人的这个域名是恰好由cloudflare解析，同时用cloudflare做cdn，所以在存储桶中直接将子域名进行绑定，在设置中添加自定义域即可。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;https://www.haoyuli.cn:1443/svg/loading.min.svg&#34;&#xA;        data-src=&#34;https://cdn.haoyu.app/imgs/2025/12/03/00454db638ad73a4.png&#34;&#xA;        data-srcset=&#34;https://cdn.haoyu.app/imgs/2025/12/03/00454db638ad73a4.png, https://cdn.haoyu.app/imgs/2025/12/03/00454db638ad73a4.png 1.5x, https://cdn.haoyu.app/imgs/2025/12/03/00454db638ad73a4.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;https://cdn.haoyu.app/imgs/2025/12/03/00454db638ad73a4.png&#34;&#xA;        title=&#34;https://cdn.haoyu.app/imgs/2025/12/03/00454db638ad73a4.png&#34; /&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;然后还要下载一个sharex程序&#34;&gt;然后还要下载一个ShareX程序&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/ShareX/ShareX/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener noreffer &#34;&gt;https://github.com/ShareX/ShareX/releases&lt;/a&gt; 这里有很多版本&lt;/p&gt;&#xA;&lt;p&gt;其中我自己下载了ShareX 18.0.1 、ShareX 17.1.0两个版本（保护EXE版本和绿色便携版），经过许久口吐兰花之后果断选择了低版本便携版，另外我还在Chrome浏览中安装了这个软件的插件，直接复制图片地址或网页文字进行上传。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;https://www.haoyuli.cn:1443/svg/loading.min.svg&#34;&#xA;        data-src=&#34;https://cdn.haoyu.app/imgs/2025/12/03/09e787a43d7431a9.png&#34;&#xA;        data-srcset=&#34;https://cdn.haoyu.app/imgs/2025/12/03/09e787a43d7431a9.png, https://cdn.haoyu.app/imgs/2025/12/03/09e787a43d7431a9.png 1.5x, https://cdn.haoyu.app/imgs/2025/12/03/09e787a43d7431a9.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;https://cdn.haoyu.app/imgs/2025/12/03/09e787a43d7431a9.png&#34;&#xA;        title=&#34;https://cdn.haoyu.app/imgs/2025/12/03/09e787a43d7431a9.png&#34; /&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-图床&#34;&gt;&lt;strong&gt;2️⃣ 图床&lt;/strong&gt;&lt;/h2&gt;&#xA;&lt;p&gt;首先我有一个图床程序，这个图床程序的存储方式包含S3存储，可以直接利用该图床程序将图片传输到R2对象存储，但是配合程序提供的api结合ShareX可以更方便的实现截图上传功能并在粘贴板中返回图片地址和图片，同时又可以通过该图床程序管理照片，以及特别区分开图片与其他文件，所以这里用到的是“图床程序+ShareX程序+cloudflare R2的方式”传输和管理图片，当然也可以只用“ShareX+cloudflare R2”的方式进行传输（参考第3部分）。&lt;/p&gt;&#xA;&lt;p&gt;在ShareX程序&amp;ndash;目标&amp;ndash;图片上传&amp;ndash;选择自定义图像上传&lt;/p&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;https://www.haoyuli.cn:1443/svg/loading.min.svg&#34;&#xA;        data-src=&#34;https://cdn.haoyu.app/imgs/2025/12/03/d6a05f10fdbf2e2c.png&#34;&#xA;        data-srcset=&#34;https://cdn.haoyu.app/imgs/2025/12/03/d6a05f10fdbf2e2c.png, https://cdn.haoyu.app/imgs/2025/12/03/d6a05f10fdbf2e2c.png 1.5x, https://cdn.haoyu.app/imgs/2025/12/03/d6a05f10fdbf2e2c.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;https://cdn.haoyu.app/imgs/2025/12/03/d6a05f10fdbf2e2c.png&#34;&#xA;        title=&#34;https://cdn.haoyu.app/imgs/2025/12/03/d6a05f10fdbf2e2c.png&#34; /&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>centos7平台openppp2编译过程（非完整教程）</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/ppp-build/</link>
      <pubDate>Wed, 26 Nov 2025 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/ppp-build/</guid>
      <description>&lt;p&gt;本文记录了从零开始在 &lt;strong&gt;CentOS 7&lt;/strong&gt; 搭建开发环境到最终生成你的 &lt;code&gt;ppp&lt;/code&gt; 可执行文件，包括 Boost、OpenSSL、jemalloc 的静态构建，并且确保最终可在 CentOS 7 上部署。这个流程适合新机器或干净环境。&lt;/p&gt;&#xA;&lt;p&gt;我会按步骤分为 &lt;strong&gt;环境准备 → 第三方库编译 → 项目配置 → 编译生成&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-环境准备&#34;&gt;&lt;strong&gt;1️⃣ 环境准备&lt;/strong&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;更新系统&#34;&gt;更新系统&lt;/h3&gt;&#xA;&lt;p&gt;sudo yum update -y&lt;/p&gt;&#xA;&lt;p&gt;sudo yum groupinstall &amp;ldquo;Development Tools&amp;rdquo; -y&lt;/p&gt;&#xA;&lt;p&gt;sudo yum install epel-release -y&lt;/p&gt;&#xA;&lt;p&gt;sudo yum install wget tar bzip2 make cmake git -y&lt;/p&gt;&#xA;&lt;h3 id=&#34;安装-devtoolset-11gcc-11&#34;&gt;安装 Devtoolset 11（GCC 11）&lt;/h3&gt;&#xA;&lt;p&gt;CentOS7 默认 GCC 版本太低，需用 SCL 安装新版本：&lt;/p&gt;&#xA;&lt;p&gt;sudo yum install centos-release-scl -y&lt;/p&gt;&#xA;&lt;p&gt;sudo yum install devtoolset-11 -y&lt;/p&gt;&#xA;&lt;p&gt;scl enable devtoolset-11&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用fpm打包二进制程序（简版教程）</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/fpm-setup/</link>
      <pubDate>Sun, 23 Nov 2025 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/fpm-setup/</guid>
      <description>&lt;p&gt;本文记录了在 linux 环境下，利用 fpm 挂载打包二进制程序的教程。&lt;/p&gt;&#xA;&lt;h2 id=&#34;利用fpm打包二进制程序为rpm或deb包&#34;&gt;利用fpm打包二进制程序为rpm或deb包&lt;/h2&gt;&#xA;&lt;h2 id=&#34;1-安装所需工具&#34;&gt;1. 安装所需工具&lt;/h2&gt;&#xA;&lt;p&gt;首先，需要确保你的系统安装了必要的工具和依赖项。&lt;/p&gt;&#xA;&lt;p&gt;安装 fpm 的前提：&lt;/p&gt;&#xA;&lt;p&gt;Ruby 和 相关开发工具。&lt;/p&gt;&#xA;&lt;p&gt;GCC 和 Make 等编译工具。&lt;/p&gt;&#xA;&lt;p&gt;RPM 和 Debian 打包工具。&lt;/p&gt;&#xA;&lt;p&gt;在 CentOS 7 或 Debian/Ubuntu 系统上，你可以按以下步骤安装这些工具：&lt;/p&gt;&#xA;&lt;p&gt;Debian 12 (或其他 Debian/Ubuntu 系统):&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt-get install ruby ruby-dev gcc make rpm-build -y&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;CentOS 7（本教程在该平台部署）&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yum install  gcc make rpm-build -y&#xD;&#xA;yum install -y rh-ruby27 rh-ruby27-ruby-devel&#xD;&#xA;scl enable rh-ruby27 bash&#xD;&#xA;ruby -v&#xD;&#xA;# ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;安装 fpm：&lt;/p&gt;&#xA;&lt;p&gt;fpm 是一个用于打包的软件包管理工具，可以方便地生成 .deb 和 .rpm 包。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloudflare R2 &#43; rclone 备份教程（新手版）</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/rclone-cfr2-setup/</link>
      <pubDate>Sun, 16 Nov 2025 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/rclone-cfr2-setup/</guid>
      <description>&lt;p&gt;本文记录了在 linux 环境下，利用 rclone 备份vps目录至Cloudflare R2的部署参考教程。&lt;/p&gt;&#xA;&lt;h2 id=&#34;cloudflare-r2--rclone-备份教程新手版&#34;&gt;Cloudflare R2 + rclone 备份教程（新手版）&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;注册 Cloudflare → 创建 R2 Bucket&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;获取 Access Key / Secret Key / Endpoint&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;配置 rclone 连接 R2&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;测试同步 / 写脚本同步多目录&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;设置 Cron 定时自动备份&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;1-注册-cloudflare-并启用-r2&#34;&gt;1️⃣ 注册 Cloudflare 并启用 R2&lt;/h2&gt;&#xA;&lt;p&gt;注册 Cloudflare 账号：https://dash.cloudflare.com/sign-up&lt;/p&gt;&#xA;&lt;p&gt;登录 Cloudflare 控制面板&lt;/p&gt;&#xA;&lt;p&gt;在左侧菜单找到 R2（存储和数据库-R2对象存储） → Create Bucket&lt;/p&gt;&#xA;&lt;p&gt;填写 Bucket Name（例如 backup）&lt;/p&gt;&#xA;&lt;p&gt;选择区域（Region），如：亚太（apac）、西欧（weur）、西美（wnam）&lt;/p&gt;&#xA;&lt;p&gt;点击 Create Bucket&lt;/p&gt;&#xA;&lt;p&gt;注意：R2 的出站流量免费，但存储和操作有少量费用。（每月前10GB流量免费）&lt;/p&gt;&#xA;&lt;h2 id=&#34;2-获取-access-key--secret-key--endpoint&#34;&gt;2️⃣ 获取 Access Key / Secret Key / Endpoint&lt;/h2&gt;&#xA;&lt;p&gt;在 Cloudflare R2 控制面板，进入 API Keys / Access Keys （右下方api token点击manage）&lt;/p&gt;</description>
    </item>
    <item>
      <title>谷歌workspace &#43; rclone 挂载部署指南</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/rclone-gdrive-setup/</link>
      <pubDate>Fri, 14 Nov 2025 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/rclone-gdrive-setup/</guid>
      <description>&lt;p&gt;本文记录了在 linux 环境下，利用 rclone 挂载 Google Workspace的部署参考教程。&lt;/p&gt;&#xA;&lt;h2 id=&#34;-谷歌workspace--rclone-挂载部署指南&#34;&gt;🔹 谷歌workspace + rclone 挂载部署指南&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;workspace账户设置&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;配置rclone.conf&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;前台挂载测试谷歌云盘&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;长期运行谷歌云盘&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;问题总结&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;1-安装-rclone&#34;&gt;1️⃣ 安装 rclone&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; sudo -v ; curl https://rclone.org/install.sh | sudo bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或下载二进制软件解压至/opt/rclone（推荐）&lt;/p&gt;&#xA;&lt;p&gt;确认安装：&lt;/p&gt;&#xA;&lt;p&gt;rclone version&lt;/p&gt;&#xA;&lt;h2 id=&#34;2-准备-google-workspace-service-account&#34;&gt;2️⃣ 准备 Google Workspace Service Account&lt;/h2&gt;&#xA;&lt;p&gt;打开 Google Cloud Console → IAM &amp;amp; Admin → Service Accounts&lt;/p&gt;&#xA;&lt;p&gt;创建一个 Service Account，例如 rclone-drive-sa&lt;/p&gt;&#xA;&lt;p&gt;生成 JSON Key，下载到 VPS，例如 /opt/rclone/google-sa.json&lt;/p&gt;&#xA;&lt;p&gt;在 Google Workspace 管理后台（Admin Console → 安全 → API 控制 → 域范围委托）：&lt;/p&gt;</description>
    </item>
    <item>
      <title>坚果云 &#43; rclone 挂载部署指南（含通知）</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/rclone-nutstore-setup/</link>
      <pubDate>Wed, 12 Nov 2025 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/rclone-nutstore-setup/</guid>
      <description>&lt;p&gt;本文记录了在 linux 环境下，利用rclone挂载坚果云的部署参考教程。&lt;/p&gt;&#xA;&lt;h2 id=&#34;坚果云--rclone-挂载部署指南包含&#34;&gt;&lt;strong&gt;坚果云 + rclone 挂载部署指南&lt;/strong&gt;，包含：&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;自动创建挂载目录（如/mnt/blog /mnt/edu365）&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;部署service &lt;code&gt;rclone@.service&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;配置检测脚本 &lt;code&gt;/usr/local/bin/rclone-check.sh&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;配合 Telegram + msmtp 邮件通知&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;systemd 定时器自动检测 &amp;amp; 重启&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-一安装必要依赖并配置rclone&#34;&gt;🔹 一、安装必要依赖并配置rclone&lt;/h2&gt;&#xA;&lt;p&gt;本教程依赖 &lt;code&gt;fuse&lt;/code&gt; 和 &lt;code&gt;msmtp&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;p&gt;sudo yum install -y fuse3&lt;/p&gt;&#xA;&lt;p&gt;sudo yum install -y msmtp&lt;/p&gt;&#xA;&lt;p&gt;fuse必须安装，否则rclone会报错，msmtp为可选安装，若要邮件通知需安装，本人vps采用msmtp发送邮件通知。&lt;/p&gt;&#xA;&lt;p&gt;下载rclone至目录/opt/rclone,配置/opt/rclone/rclone.conf：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;edu365&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;type   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; webdav&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;url    &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; https://dav.jianguoyun.com/dav/edu365&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vendor &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; other&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; 账户&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pass   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; 密钥&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;blog&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;type   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; webdav&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;url    &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; https://dav.jianguoyun.com/dav/blog&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vendor &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; other&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; 账户&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pass   &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; 密钥&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-二部署rcloneservice&#34;&gt;🔹 二、部署 rclone@.service&lt;/h2&gt;&#xA;&lt;p&gt;创建文件 &lt;code&gt;/etc/systemd/system/rclone@.service&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Unit&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Description&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;Rclone Mount &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; %i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Documentation&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;https://rclone.org/commands/rclone_mount/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;After&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;network-online.target&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Wants&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;network-online.target&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Service&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Type&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;simple&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;User&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Group&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 自动创建挂载点目录&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ExecStartPre&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/bin/mkdir -p /mnt/%i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 挂载命令&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ExecStart&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/opt/rclone/rclone mount %i:/ /mnt/%i &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --config /opt/rclone/rclone.conf &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --vfs-cache-mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;writes &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --vfs-cache-max-age 30m &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --vfs-cache-max-size 200M &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --allow-other &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --dir-cache-time 5m &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --poll-interval 30s &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --timeout 30m &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --umask &lt;span style=&#34;color:#ae81ff&#34;&gt;002&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --log-file /var/log/rclone-%i.log &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --log-level INFO&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 停止时卸载&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ExecStop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/bin/fusermount -uz /mnt/%i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Restart&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;on-failure&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RestartSec&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RestartPreventExitStatus&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TimeoutStopSec&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Install&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;WantedBy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;multi-user.target&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启用挂载服务示例：&lt;/p&gt;</description>
    </item>
    <item>
      <title>网盘博客搭建参考简略教程</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/hugo-blog-setup/</link>
      <pubDate>Sun, 09 Nov 2025 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/hugo-blog-setup/</guid>
      <description>&lt;p&gt;本文记录了在 CentOS 7 环境下，从零搭建 &lt;strong&gt;Hugo Extended + LoveIt 主题&lt;/strong&gt; 博客，并将文章存储目录放置在 &lt;strong&gt;坚果云挂载目录&lt;/strong&gt; 中参考过程，回忆记录包含所有关键配置，避免踩坑。&lt;/p&gt;&#xA;&lt;p&gt;关键词：CentOS7  Hugo（Extended） LoveIt主题  坚果云挂载&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-系统环境说明&#34;&gt;1. 系统环境说明&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;项目&lt;/th&gt;&#xA;          &lt;th&gt;说明&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;系统&lt;/td&gt;&#xA;          &lt;td&gt;CentOS 7   （其他linux版本同样适用）&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Hugo&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Extended 版本&lt;/strong&gt;（必须支持 SCSS 编译）&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;主题&lt;/td&gt;&#xA;          &lt;td&gt;LoveIt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;文章存储&lt;/td&gt;&#xA;          &lt;td&gt;VPS 本地 + 坚果云挂载目录&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;访问入口&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;https://www.edu365.site/&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;部署模式&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;hugo server&lt;/code&gt; 实时更新&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-安装基础依赖&#34;&gt;2. 安装基础依赖&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yum -y install git wget gcc make golang&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注：可在其他centos7环境下安装编译，编译完成后将编译好的二进制hugo版本复制至当前系统&lt;/p&gt;&#xA;&lt;h2 id=&#34;3-编译并安装-hugo-extended&#34;&gt;3. 编译并安装 Hugo Extended&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone https://github.com/gohugoio/hugo.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd hugo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;go install --tags extended&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp ~/go/bin/hugo /opt/hugo/hugo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod +x /opt/hugo/hugo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;验证：&lt;/p&gt;</description>
    </item>
    <item>
      <title>hello_world</title>
      <link>https://www.haoyuli.cn:1443/posts/blog/hello_world/</link>
      <pubDate>Sat, 08 Nov 2025 00:00:00 +0000</pubDate><author>i@haoyuli.cn (haoyuli)</author>
      <guid>https://www.haoyuli.cn:1443/posts/blog/hello_world/</guid>
      <description>&lt;p&gt;欢迎来到我的博客！&#xA;这里是一篇用于测试和展示主题效果的示例文章。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-内容格式&#34;&gt;1.📖 内容格式&lt;/h2&gt;&#xA;&lt;h2 id=&#34;-本文内容包括&#34;&gt;📝 本文内容包括：&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;段落内容&lt;/li&gt;&#xA;&lt;li&gt;提示框&lt;/li&gt;&#xA;&lt;li&gt;代码块&lt;/li&gt;&#xA;&lt;li&gt;列表效果&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-提示框示例&#34;&gt;💡 提示框示例&lt;/h2&gt;&#xA;&lt;div class=&#34;details admonition tip open&#34;&gt;&#xA;        &lt;div class=&#34;details-summary admonition-title&#34;&gt;&#xA;            &lt;i class=&#34;icon fas fa-lightbulb fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;提示&lt;i class=&#34;details-icon fas fa-angle-right fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&#xA;        &lt;/div&gt;&#xA;        &lt;div class=&#34;details-content&#34;&gt;&#xA;            &lt;div class=&#34;admonition-content&#34;&gt;你可以自由编辑 Markdown 文件来创建文章。&lt;/div&gt;&#xA;        &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;title: &amp;#34;hello_world&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;date: 2025-11-09&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;draft: false&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description: &amp;#34;无&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tags: [&amp;#34;日常更新&amp;#34;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;categories: [&amp;#34;默认分类&amp;#34;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## 标题&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;--正文内容&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-博客备份&#34;&gt;2.🔄 博客备份&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;root@linux ~&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# crontab -l&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt; * * * /root/send-blog-backup.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;send-blog-backup.sh&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 配置&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BACKUP_DIR&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;~/blog-backups&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SOURCE_DIR&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/opt/blog&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TO&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;i@protonmail.com&amp;#34;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;FROM&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;i@gmail.com&amp;#34;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SUBJECT&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;blog backup &lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ACCOUNT&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;google&amp;#34;&lt;/span&gt;   &lt;span style=&#34;color:#75715e&#34;&gt;# msmtp 配置的谷歌邮箱账户&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;KEEP_DAYS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ZIP_PASSWORD&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;你的密码&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 设置压缩包密码&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 创建备份目录&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$BACKUP_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 给 md 文件加 UTF-8 BOM（临时目录）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TMP_DIR&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;mktemp -d&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp -r &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$SOURCE_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;/* &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TMP_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 为每个 md 文件加 BOM&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; f in &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TMP_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;/*.md; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; -f &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$f&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 检查文件是否已经有 BOM&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ! head -c &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$f&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | grep -q &lt;span style=&#34;color:#e6db74&#34;&gt;$&amp;#39;\xEF\xBB\xBF&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# 给文件加 BOM&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;echo -ne &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\xEF\xBB\xBF&amp;#39;&lt;/span&gt;; cat &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$f&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &amp;gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;f&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;.bom&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; mv &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;f&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;.bom&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$f&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 生成 ZIP 压缩包&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BACKUP_FILE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$BACKUP_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;/blog-content-&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;.zip&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TMP_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zip -r -P &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$ZIP_PASSWORD&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$BACKUP_FILE&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; ./*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 获取备份信息&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BACKUP_SIZE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;du -h &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$BACKUP_FILE&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | cut -f1&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BACKUP_TIME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y-%m-%d %H:%M:%S&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BODY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;备份已完成：&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;路径：&lt;/span&gt;$BACKUP_FILE&lt;span style=&#34;color:#e6db74&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;大小：&lt;/span&gt;$BACKUP_SIZE&lt;span style=&#34;color:#e6db74&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;创建时间：&lt;/span&gt;$BACKUP_TIME&lt;span style=&#34;color:#e6db74&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;压缩密码已设置。&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 发送邮件（msmtp + base64）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;BOUNDARY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ZZ_/afg6432dfgkl.94531q&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;From: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;FROM&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;To: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;TO&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Subject: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;SUBJECT&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MIME-Version: 1.0&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Type: multipart/mixed; boundary=\&amp;#34;&lt;/span&gt;$BOUNDARY&lt;span style=&#34;color:#e6db74&#34;&gt;\&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--&lt;/span&gt;$BOUNDARY&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Type: text/plain; charset=UTF-8&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Transfer-Encoding: 7bit&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$BODY&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--&lt;/span&gt;$BOUNDARY&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Type: application/zip; name=\&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;basename $BACKUP_FILE&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;\&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Transfer-Encoding: base64&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Disposition: attachment; filename=\&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;basename $BACKUP_FILE&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;\&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl base64 -A -in &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$BACKUP_FILE&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | fold -w &lt;span style=&#34;color:#ae81ff&#34;&gt;76&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--&lt;/span&gt;$BOUNDARY&lt;span style=&#34;color:#e6db74&#34;&gt;--&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; | msmtp -a &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$ACCOUNT&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TO&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 删除临时目录&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rm -rf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TMP_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 删除 7 天前的旧备份&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -----------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;find &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$BACKUP_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -type f -name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;blog-content-*.zip&amp;#34;&lt;/span&gt; -mtime +$KEEP_DAYS -exec rm -f &lt;span style=&#34;color:#f92672&#34;&gt;{}&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;3-常用-emoji&#34;&gt;3.📝 常用 Emoji&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Emoji&lt;/th&gt;&#xA;          &lt;th&gt;用途&lt;/th&gt;&#xA;          &lt;th&gt;示例&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1️⃣ 写作与文章相关&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;📝&lt;/td&gt;&#xA;          &lt;td&gt;笔记、文章&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;📝 今日笔记&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;📖&lt;/td&gt;&#xA;          &lt;td&gt;阅读、教程&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;📖 阅读教程&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;✍️&lt;/td&gt;&#xA;          &lt;td&gt;编辑、创作&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;✍️ 编辑文章&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;📰&lt;/td&gt;&#xA;          &lt;td&gt;新闻、更新&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;📰 最新动态&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;2️⃣ 任务与状态&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;✅&lt;/td&gt;&#xA;          &lt;td&gt;已完成&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;✅ 已完成部署&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;❌&lt;/td&gt;&#xA;          &lt;td&gt;失败&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;❌ 操作失败&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🔄&lt;/td&gt;&#xA;          &lt;td&gt;更新&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🔄 内容更新&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;⏳&lt;/td&gt;&#xA;          &lt;td&gt;等待/进度&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;⏳ 等待完成&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🎯&lt;/td&gt;&#xA;          &lt;td&gt;目标&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🎯 本周目标&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;3️⃣ 提示与注意事项&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;⚠️&lt;/td&gt;&#xA;          &lt;td&gt;警告&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;⚠️ 注意事项&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;💡&lt;/td&gt;&#xA;          &lt;td&gt;提示、小技巧&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;💡 小技巧&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;📌&lt;/td&gt;&#xA;          &lt;td&gt;重点、收藏&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;📌 本文重点&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🔔&lt;/td&gt;&#xA;          &lt;td&gt;提醒&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🔔 重要通知&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;4️⃣ 热点与推荐&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🔥&lt;/td&gt;&#xA;          &lt;td&gt;热门&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🔥 热门文章&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🌟&lt;/td&gt;&#xA;          &lt;td&gt;推荐&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🌟 推荐阅读&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;💎&lt;/td&gt;&#xA;          &lt;td&gt;精选&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;💎 精选内容&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;⭐&lt;/td&gt;&#xA;          &lt;td&gt;星标&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;⭐ 五星推荐&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;5️⃣ 技术与工具&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🛠&lt;/td&gt;&#xA;          &lt;td&gt;工具、配置&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🛠 配置工具&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🧩&lt;/td&gt;&#xA;          &lt;td&gt;插件、模块&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🧩 插件安装&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;⚙️&lt;/td&gt;&#xA;          &lt;td&gt;系统设置&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;⚙️ 系统配置&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;💻&lt;/td&gt;&#xA;          &lt;td&gt;编程、开发&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;💻 编写代码&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🖥&lt;/td&gt;&#xA;          &lt;td&gt;服务器、电脑&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🖥 部署环境&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;6️⃣ 社交与交流&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;💬&lt;/td&gt;&#xA;          &lt;td&gt;评论、讨论&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;💬 留言讨论&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;📩&lt;/td&gt;&#xA;          &lt;td&gt;邮件、联系&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;📩 联系我&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🔗&lt;/td&gt;&#xA;          &lt;td&gt;链接、参考&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🔗 参考资料&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🤝&lt;/td&gt;&#xA;          &lt;td&gt;合作&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🤝 合作伙伴&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;7️⃣ 发布与进度&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🚀&lt;/td&gt;&#xA;          &lt;td&gt;发布、上线&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🚀 部署完成&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;🗓&lt;/td&gt;&#xA;          &lt;td&gt;时间、日程&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;🗓 发布日期&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;⏱&lt;/td&gt;&#xA;          &lt;td&gt;耗时&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;⏱ 耗时统计&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;📊&lt;/td&gt;&#xA;          &lt;td&gt;数据、统计&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;📊 数据分析&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
  </channel>
</rss>
