<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Memos on 修远</title><link>https://blog.l6l6.xyz/tags/memos/</link><description>Recent content in Memos on 修远</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 29 Feb 2024 15:06:01 +0800</lastBuildDate><atom:link href="https://blog.l6l6.xyz/tags/memos/index.xml" rel="self" type="application/rss+xml"/><item><title>自建Memos安装与自动备份</title><link>https://blog.l6l6.xyz/p/memos-backup/</link><pubDate>Thu, 29 Feb 2024 15:06:01 +0800</pubDate><guid>https://blog.l6l6.xyz/p/memos-backup/</guid><description>&lt;img src="https://www.usememos.com/demo.png" alt="Featured image of post 自建Memos安装与自动备份" />&lt;h1 id="整体思路">整体思路
&lt;/h1>&lt;ol>
&lt;li>安装 Docker 版 Memos&lt;/li>
&lt;li>安装自动同步工具 Dropbox&lt;/li>
&lt;li>自定义同步脚本，每天定时执行脚本，执行成功后发送 Tel 消息通知。&lt;/li>
&lt;/ol>
&lt;h1 id="一安装-docker-版-memos">一、安装 Docker 版 Memos
&lt;/h1>&lt;p>Memos 项目地址：&lt;a class="link" href="https://github.com/usememos/memos" target="_blank" rel="noopener"
>Memos&lt;/a>&lt;/p>
&lt;p>Memos Docker 版安装命令如下：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run -d --name memos -p 5230:5230 -v ~/memos/:/var/opt/memos ghcr.io/usememos/memos:latest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>映射 memos 目录 &lt;code>~/memos/&lt;/code>&lt;/p>
&lt;p>安装成功后访问 &lt;strong>主机 IP：5230&lt;/strong> ，然后可继续设置账号和存储。&lt;/p>
&lt;h1 id="二自动备份memos数据文件">二、自动备份Memos数据文件
&lt;/h1>&lt;h2 id="1-安装-dropbox">1. 安装 Dropbox
&lt;/h2>&lt;p>参照 &lt;a class="link" href="https://www.dropbox.com/install-linux" target="_blank" rel="noopener"
>官方安装页面&lt;/a>，先运行以下命令下载并解压 Dropbox。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">cd&lt;/span> ~ &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> wget -O - &lt;span class="s2">&amp;#34;https://www.dropbox.com/download?plat=lnx.x86_64&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> tar xzf -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>然后在 home 目录就会产生一个 &lt;code>.dropbox-dist&lt;/code> 目录，同样参照以上官方安装页面，运行这个目录下的 &lt;code>dropboxd&lt;/code> 来启动 Dropbox 守护进程。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$ ~/.dropbox-dist/dropboxd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>根据提示需要打开 URL 登录自己的账号以绑定这台服务器。&lt;/p>
&lt;blockquote>
&lt;p>如果自己的 Dropbox 账号是通过 Google 或者 Apple 登录的话，需要先登录自己的账号设置一个密码才能在这里登录。&lt;/p>
&lt;/blockquote>
&lt;p>登录之后，控制台会出现一句话，&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">This computer is now linked to Dropbox. Welcome XXX
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>代表登录已经成功了。&lt;/p>
&lt;p>此时 home 目录下已经出现了 &lt;code>Dropbox&lt;/code> 目录，进入之后就可以看见自己 Dropbox 内部存放的文件。&lt;/p>
&lt;p>依照官方安装页面，可以通过下载一个 Python 脚本，可以更方便地用命令行控制 Dropbox。运行以下命令来下载 Python 脚本到 &lt;code>/usr/local/bin&lt;/code> 目录，即可快速执行。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ sudo wget -O /usr/local/bin/dropbox &lt;span class="s2">&amp;#34;https://www.dropbox.com/download?dl=packages/dropbox.py&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>再给它添加执行权限。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">$ sudo chmod +x /usr/local/bin/dropbox
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>然后运行 &lt;code>dropbox&lt;/code> 命令即可。&lt;/p>
&lt;p>运行 &lt;code>dropbox start&lt;/code> 启动守护进程。&lt;code>dropbox status&lt;/code> 查看状态。&lt;/p>
&lt;p>当操作 &lt;code>Dropbox&lt;/code> 目录时，守护进程会将更新的内容自动同步至 Dropbox 云端。&lt;/p>
&lt;h2 id="2-设置同步脚本">2. 设置同步脚本
&lt;/h2>&lt;p>&lt;strong>步骤 1.&lt;/strong>
安装自动同步工具 &lt;code>rsync&lt;/code>
安装命令：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">sudo yum install rsync
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>步骤 2.&lt;/strong>
创建同步脚本 &lt;code>memos_syn.sh&lt;/code> ，执行同步，并发送同步结果。
执行命令 &lt;code>nano ~/script/memos_syn.sh&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">SOURCE_DIR&lt;/span>&lt;span class="o">=&lt;/span>/root/memos/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">DEST_DIR&lt;/span>&lt;span class="o">=&lt;/span>/root/Dropbox/memos
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Run rsync to sync the directories&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rsync -avh --delete --checksum &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$SOURCE_DIR&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$DEST_DIR&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Check the exit status of rsync&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="o">[&lt;/span> &lt;span class="nv">$?&lt;/span> -eq &lt;span class="m">0&lt;/span> &lt;span class="o">]&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">then&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># If rsync was successful, send a message to the Telegram bot&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> curl -s -X POST &lt;span class="s2">&amp;#34;https://api.telegram.org/bot{token}/sendMessage&amp;#34;&lt;/span> -d &lt;span class="s2">&amp;#34;chat_id={chatid}&amp;#34;&lt;/span> -d &lt;span class="s2">&amp;#34;text=Memos数据文件同步成功!&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">else&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># If rsync had an error, send an error message to the Telegram bot&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> curl -s -X POST &lt;span class="s2">&amp;#34;https://api.telegram.org/bot{token}/sendMessage&amp;#34;&lt;/span> -d &lt;span class="s2">&amp;#34;chat_id={chatid}&amp;#34;&lt;/span> -d &lt;span class="s2">&amp;#34;text=Memos数据文件同步失败！！！&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">10&lt;/span> &lt;span class="m">0&lt;/span> * * * /root/script/memos_syn.sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>上述脚本中执行 POST 发送的 Tel 消息，&lt;code>{token}&lt;/code>填入机器人 token ，&lt;code>{chatid}&lt;/code>接收消息的个人账号ID。&lt;/p>
&lt;ul>
&lt;li>创建/获取机器人token：@BotFather&lt;/li>
&lt;li>获取个人用户id：@userinfobot&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>步骤 3.&lt;/strong>
创建定时任务，使用 &lt;code>crontab -e&lt;/code> 命令来编辑用户的 crontab 文件。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">10 0 * * * /root/script/memos_syn.sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>上述定时任务为每天 0:10 执行一次脚本，可以根据实际情况修改。
编辑完成，退出保存。&lt;/p></description></item><follow_challenge><feedId>68852316548471808</feedId><userId>55783422475808768</userId></follow_challenge></channel></rss>