From 3117fea376c6a4b90360c3b3d6c75c8e56b6f5fa Mon Sep 17 00:00:00 2001 From: sevichecc <91365763+Sevichecc@users.noreply.github.com> Date: Sun, 22 Jan 2023 03:03:34 +0800 Subject: [PATCH] new psot --- package.json | 4 +- urara/2023-01-22-backup/+page.md | 233 +++++++++++++++++++++++++++++++ 2 files changed, 235 insertions(+), 2 deletions(-) create mode 100644 urara/2023-01-22-backup/+page.md diff --git a/package.json b/package.json index bf4aed2c..943c075a 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "tsc:watch": "tsc -w -p tsconfig.node.json", "urara:build": "node urara.js build", "urara:watch": "node urara.js watch", - "kit:dev": "cross-env NODE_OPTIONS=--max_old_space_size=9126 vite dev", - "kit:build": "cross-env NODE_OPTIONS=--max_old_space_size=9126 vite build", + "kit:dev": "cross-env NODE_OPTIONS=--max_old_space_size=10250 vite dev", + "kit:build": "cross-env NODE_OPTIONS=--max_old_space_size=10250 vite build", "dev:parallel": "npm-run-all -p -r tsc:watch urara:watch \"kit:dev {@} \" --", "dev": "npm-run-all -s tsc \"dev:parallel {@} \" --", "build": "npm-run-all -s tsc urara:build kit:build clean", diff --git a/urara/2023-01-22-backup/+page.md b/urara/2023-01-22-backup/+page.md new file mode 100644 index 00000000..69a44f40 --- /dev/null +++ b/urara/2023-01-22-backup/+page.md @@ -0,0 +1,233 @@ +--- +title: 用duplicacy备份Pleroma +created: 2023-01-22 +summary: 本地备份 + 异地远端备份 +tags: + - Pleroma +--- + +## 前言 + +- 实现的功能: + - 本地备份 + - 远端加密备份 + - 定时自动清理备份 +- 关于 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) + +## 需要备份什么内容 + +- 上传的文件:`/var/lib/pleroma/upload` +- 静态文件:`/var/lib/pleroma/static` +- 数据库:`pleroma.pgdump` +- 配置文件:`/etc/pleroma/config.exs` + +参考:[Backup/Restore/Move/Remove your instance - Pleroma Documentation](https://docs-develop.pleroma.social/backend/administration/backup/) + +## 备份方式 + +### 本地备份: + +如果需要结合 duplicacy 异地备份的话,请直接看异地备份的部分 + +原理:复制上述内容到目录: `/opt/pleroma-backup` + +下面是具体的操作,我是在 root 用户下操作的, + +1. 创建备份文件夹并进入 + +```bash +sudo mkdir /opt/pleroma-backup && cd /opt/pleroma-backup +``` + +2. 创建`.env` 文件: + +```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` + +```bash +# contabo storage +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) + +#### 2. 创建脚本: + +```bash +sudo vim bash.env +``` + +写入: + +```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 <