Mastodon

备份ClawCloud Debian12服务器......vaultwarden

备份ClawCloud Debian12服务器......vaultwarden
Photo by Lukas / Unsplash

我的debian12服务器默认不支持中文。

sudo apt update
sudo apt install locales
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:zh
locale

由于之前服务器没用精心规划路径,导致家目录非常混乱,就算清理过还是有很多没使用服务文件文件夹仍在:

目前我决定创建一个新的文件夹,就像现在Hostdzire服务器上,专门存放docker项目,在细分类别。

我的备份将一个项目内有用的配置&数据打包为tar.gz在上传到backblaze对应的服务器备份bucket的对应分类。

目前还没有实现自定话,虽然很简单,但是还是先让我写好必要服务备份的脚本再说。

举例:
Python:存放运行py脚本专用,直接在家目录下
Code:存放平时作业所需要的代码/二进制文件
Docker:存放docker项目,往下会继续分类
Docker/Password:存放docker类+password类项目,比如vaultwarden
Docker/Music:存放Maloja、Multi-Scrobbler等项目
......

vaultwarden这种重要的密码服务需要重点备份

备份流程和脚本如下:

先在服务器上安装rclone链接到backblaze

sudo apt install rclone
rclone config

确认在backblaze创建bucket:Clawcloud-0-backup

确认需要备份的文件:

compose.yaml
vw-data/db_backup.sqlite3
vw-data/rsa_key.pem

确认权限正确:

sudo chown -R jay:jay /home/jay/docker/password/vaultwarden/vw-data

安装sqlite3用于备份数据库:

sudo apt install sqlite3

创建脚本:

上传到b2:Clawcloud-0-backup/vaultwarden

打上了时间戳,确认最新备份

#!/bin/bash

# ================= 配置 =================
BASE_DIR="/home/jay/docker/password/vaultwarden"
RCLONE_REMOTE="b2"
BUCKET="Clawcloud-0-backup"
TS=$(date +"%Y%m%d-%H%M%S")

# 需要备份的文件和目录(db.sqlite3 用备份副本代替)
BACKUP_ITEMS=(
    "$BASE_DIR/compose.yaml"
    "$BASE_DIR/vw-data/rsa_key.pem"
)

# 临时 SQLite 备份文件
DB_BACKUP="$BASE_DIR/vw-data/db_backup.sqlite3"

# ================= 数据库在线备份 =================
echo "[1/4] 创建 SQLite 数据库备份副本..."
sqlite3 "$BASE_DIR/vw-data/db.sqlite3" ".backup '$DB_BACKUP'"

# 将数据库备份加入打包列表
BACKUP_ITEMS+=("$DB_BACKUP")

# ================= 打包文件 =================
BACKUP_TAR="$BASE_DIR/vaultwarden-backup-${TS}.tar.gz"
echo "[2/4] 打包 Vaultwarden 所有文件..."
tar -czf "$BACKUP_TAR" "${BACKUP_ITEMS[@]}"

# ================= 上传到 Backblaze B2 =================
echo "[3/4] 上传到 Backblaze B2..."
rclone copy "$BACKUP_TAR" "${RCLONE_REMOTE}:${BUCKET}/vaultwarden/"

# ================= 清理本地临时文件 =================
echo "[4/4] 清理本地临时备份文件..."
rm -f "$DB_BACKUP" "$BACKUP_TAR"

echo "✅ Vaultwarden 备份完成并上传到 B2"