From f88ed05c3a67b03ffd25b962bd1a0c5a3ed64b38 Mon Sep 17 00:00:00 2001
From: sevichecc <91365763+Sevichecc@users.noreply.github.com>
Date: Wed, 1 Feb 2023 15:27:19 +0800
Subject: [PATCH] =?UTF-8?q?post:=20=E2=99=BB=EF=B8=8F=20rewrite?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
urara/2023-01-22-backup/+page.md | 309 ++++++++++++++++---------------
1 file changed, 163 insertions(+), 146 deletions(-)
diff --git a/urara/2023-01-22-backup/+page.md b/urara/2023-01-22-backup/+page.md
index 07264956..fb69ee55 100644
--- a/urara/2023-01-22-backup/+page.md
+++ b/urara/2023-01-22-backup/+page.md
@@ -12,14 +12,23 @@ tags:
- 本地备份
- 远端加密备份
- 定时自动清理备份
+- 存在的问题:
+ - 用`root`操作脚本不安全
+- 操作环境:`Ubuntn 20.04` `Pleroma 2.5.0`
- 关于 duplicacy:
- [Duplicacy CLI 备份工具基本使用笔记](https://www.dejavu.moe/posts/duplicacy-cli-basic-guide/)
- [Quick Start · gilbertchen/duplicacy Wiki · GitHub](https://github.com/gilbertchen/duplicacy/wiki/Quick-Start)
-- 存在的问题:
- - 用`root`操作脚本不安全
-- GitHub: [Sevichecc/pleroma-backup-script](https://github.com/Sevichecc/pleroma-backup-script)
+- 如果不需要 duplicacy 备份的话,忽略下述带 `*` 内容
-## 需要备份什么内容
+
+
+
+
+## 备份原理
+
+### 备份什么
- 上传的文件:`/var/lib/pleroma/upload`
- 静态文件:`/var/lib/pleroma/static`
@@ -28,84 +37,36 @@ tags:
参考:[Backup/Restore/Move/Remove your instance - Pleroma Documentation](https://docs-develop.pleroma.social/backend/administration/backup/)
-## 备份方式
+### 如何备份
-### 本地备份:
+- Pleroma 停机后,备份数据库
+- 用`tar` 结合`gzip` 压缩打包 `static/` 和 `uploads/`文件夹
+- 复制配置文件`config.exs`
+- 用 [duplicacy](https://duplicacy.com/) 将所有本地备份内容上传至 S3 存储中
+- 用`expect`脚本在 duplicacy 备份过程中自动输入
-如果需要结合 duplicacy 异地备份的话,请直接看异地备份的部分
+## 备份准备
-原理:复制上述内容到目录: `/opt/pleroma-backup`
+- 确定上述备份内容的所在位置
+- 创建一个备份存放的文件夹并进入:
+ ```bash
+ sudo mkdir /opt/pleroma-backup && cd /opt/pleroma-backup
+ ```
+- \*安装 `expect`:
+ ```bash
+ sudo apt-get install tcl tk expect
+ ```
+- \*安装 `duplicacy`,详见 [Duplicacy CLI 备份工具基本使用笔记](https://www.dejavu.moe/posts/duplicacy-cli-basic-guide/)
-下面是具体的操作,我是在 root 用户下操作的,
+## 备份流程
-1. 创建备份文件夹并进入
+我是在 root 用户下操作的
-```bash
-sudo mkdir /opt/pleroma-backup && cd /opt/pleroma-backup
-```
+### 1. \*初始化 duplicacy
-2. 创建`.env` 文件:
+在开始之前,确保按照安装好了 duplicacy,然后进入到备份文件夹中(下为`/opt/pleroma-backup`),
-```bash
-PLEROMA_DB=pleroma
-PLEROMA_PATH=/var/lib/pleroma
-PLEROMA_CONFIG_PATH=/etc/pleroma/config.exs
-BACKUP_PATH=/opt/pleroma-backup
-```
-
-- PLEROMA_DB: pleroma 数据库的名字
-- PLEROMA_PATH: pleroma 静态文件的位置,下面应该会有`static` 和`uploads` 文件
-- PLEROMA_CONFIG_PATH: pleroma 设置文件的位置
-- BACKUP_PATH:备份文件夹的位置
-
-3. 创建 shell 脚本
-
-```bash
-sudo vim backup.sh
-```
-
-写入:
-
-```bash
-#!/bin/bash
-source /etc/profile
-source ./.env
-
-echo `date +"%Y-%m-%d %H:%M:%S"` " now starting backup"
-echo "————————————backup to local directory——————————"
-echo 'stop pleroma'
-sudo systemctl stop pleroma
-
-echo "1.dump database"
-sudo -Hu postgres pg_dump -d $PLEROMA_DB --format=custom -f ${BACKUP_PATH}/pleroma.pgdump
-
-echo "2. copy upload & static folder"
-cp -r ${PLEROMA_PATH}/static ${BACKUP_PATH}
-cp -r ${PLEROMA_PATH}/uploads ${BACKUP_PATH}
-
-echo "3. copy config file"
-cp ${PLEROMA_CONFIG_PATH} ${BACKUP_PATH}
-
-echo "restart pleroma"
-sudo systemctl start pleroma
-echo `date +"%Y-%m-%d %H:%M:%S"` " done!"
-```
-
-运行脚本:
-
-```bash
-sudo bash backup.sh
-```
-
-### 异地备份
-
-方式:使用 duplicay 备份到远端存储中,我这里用的是 contabo storage,推荐 cloudflare 的 R2,但我不清楚如何配置……
-
-在开始之前,确保按照[Duplicacy CLI 备份工具基本使用笔记](https://www.dejavu.moe/posts/duplicacy-cli-basic-guide/) 安装好了 duplicacy,然后进入到备份文件夹中(下为`/opt/pleroma-backup`)
-
-#### 1. 初始化
-
-这里设置 duplicacy Snapshot ID 为 pleroma,bucket 名为`pleroma`
+这里设置 duplicacy Snapshot ID 为 pleroma,bucket 名为`pleroma`:
```bash
# contabo storage
@@ -114,104 +75,90 @@ sudo duplicacy init -e pleroma s3c://usc1@usc1.contabostorage.com/pleroma
然后输入密码,如 1234
-其他平台: [Supported storage backends - How-to - Duplicacy Forum](https://forum.duplicacy.com/t/supported-storage-backends/1107)
+我所用的是 Contabo storage,比较推荐 Cloudflare 的 R2,但我尚不清楚如何配置……
-#### 2. 创建脚本:
+其他平台的配置参考: [Supported storage backends - How-to - Duplicacy Forum](https://forum.duplicacy.com/t/supported-storage-backends/1107)
+
+### 2. 获取备份脚本
+
+从 Github 获取并解压:
```bash
-sudo vim backup.sh
+sudo curl -L https://github.com/Sevichecc/pleroma-backup-script/releases/download/1.0.0/backup-script.zip -o backup-script.zip
+sudo unzip backup-script.zip
+sudo rm -rf backup-script.zip
```
-写入:
-
-```bash
-#!/bin/bash
-source /etc/profile
-source ./.env
-
-echo `date +"%Y-%m-%d %H:%M:%S"` " now starting backup"
-echo 'stop pleroma'
-sudo systemctl stop pleroma
-
-echo "————————————backup to local directory——————————"
-echo "1.dump database"
-sudo -Hu postgres pg_dump -d $PLEROMA_DB --format=custom -f ${BACKUP_PATH}/pleroma.pgdump
-
-echo "2.copy upload & static folder"
-cp -r ${PLEROMA_PATH}/static ${BACKUP_PATH}
-cp -r ${PLEROMA_PATH}/uploads ${BACKUP_PATH}
-
-echo "3.copy config file"
-cp ${PLEROMA_CONFIG_PATH} ${BACKUP_PATH}
-
-echo "————————————upload to remote——————————"
-echo "4.backup to remote"
-/usr/bin/expect <