206 lines
5.2 KiB
Markdown
206 lines
5.2 KiB
Markdown
好的,我帮你把这次微信备份的完整部署经验整合成一份**更新后的文档**,方便后续参考和维护。
|
||
|
||
---
|
||
|
||
# PBS 备份服务器 + 微信聊天记录备份部署文档
|
||
|
||
## 📋 系统概览
|
||
|
||
| 项目 | 内容 |
|
||
| :--- | :--- |
|
||
| **PBS 服务器** | `pbs01`(虚拟机,Proxmox Backup Server 4.2-1) |
|
||
| **数据盘** | 100GB(`/dev/sdb1` → `/mnt/backup`) |
|
||
| **Datastore 名称** | `weixin_backup` |
|
||
| **备份目标** | PC02 微信聊天记录备份文件夹 |
|
||
| **网络方案** | Tailscale 内网穿透 |
|
||
| **客户端** | PC02 WSL2(Ubuntu 24.04)+ PBS Client |
|
||
|
||
---
|
||
|
||
## 🖥️ PBS 服务端配置(已完成)
|
||
|
||
### 磁盘挂载
|
||
|
||
```bash
|
||
# 分区并格式化
|
||
sudo fdisk /dev/sdb # 创建分区 /dev/sdb1
|
||
sudo mkfs.ext4 /dev/sdb1
|
||
|
||
# 挂载
|
||
sudo mkdir -p /mnt/backup
|
||
sudo mount /dev/sdb1 /mnt/backup
|
||
|
||
# 自动挂载(/etc/fstab)
|
||
UUID=你的UUID /mnt/backup ext4 defaults 0 2
|
||
```
|
||
|
||
### Datastore 创建
|
||
|
||
```bash
|
||
proxmox-backup-manager datastore create weixin_backup /mnt/backup
|
||
```
|
||
|
||
### 保留策略(Prune)
|
||
|
||
```bash
|
||
proxmox-backup-manager datastore update weixin_backup \
|
||
--keep-daily 30 \
|
||
--keep-monthly 12
|
||
```
|
||
|
||
### API Token 权限设置
|
||
|
||
```bash
|
||
# 为 Token 授予 Datastore 备份权限
|
||
proxmox-backup-manager acl update /datastore/weixin_backup root@pam!pc02-weixin --roles DatastoreAdmin
|
||
```
|
||
|
||
> **Token 信息:**
|
||
> - Token ID:`root@pam!pc02-weixin`
|
||
> - Secret:`a21e8e89-a18f-4a01-b7f3-7aaa4a0db10e`
|
||
|
||
---
|
||
|
||
## 💻 PC02 客户端配置(WSL2 Ubuntu 24.04)
|
||
|
||
### 安装 PBS 客户端
|
||
|
||
```bash
|
||
# 添加 Proxmox 官方源
|
||
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
|
||
echo "deb http://download.proxmox.com/debian/pbs-client bookworm main" | sudo tee /etc/apt/sources.list.d/pbs-client.list
|
||
sudo apt update
|
||
sudo apt install proxmox-backup-client -y
|
||
```
|
||
|
||
### 手动备份命令
|
||
|
||
```bash
|
||
# 设置认证信息(注意用单引号避免 zsh 感叹号报错)
|
||
export PBS_REPOSITORY='root@pam!pc02-weixin@pbs01:weixin_backup'
|
||
export PBS_PASSWORD='a21e8e89-a18f-4a01-b7f3-7aaa4a0db10e'
|
||
|
||
# 执行备份(首次全量,后续增量)
|
||
proxmox-backup-client backup weixin.pxar:/mnt/d/yangxuan/Documents/xwechat_files/Backup/wxid_4931329313415
|
||
```
|
||
|
||
> ⚠️ **注意:**
|
||
> - 若 `pbs01` 主机名无法解析,改用 Tailscale IP:`root@pam!pc02-weixin@100.x.x.x:weixin_backup`
|
||
> - 备份归档名 `weixin.pxar` 可自定义,但一旦确定不要随意更改,否则会丢失增量备份链
|
||
|
||
### WSL 路径说明
|
||
|
||
| Windows 路径 | WSL 路径 |
|
||
| :--- | :--- |
|
||
| `D:\yangxuan\Documents\...` | `/mnt/d/yangxuan/Documents/...` |
|
||
|
||
---
|
||
|
||
## 🤖 自动化备份脚本
|
||
|
||
### 创建脚本 `~/backup-wechat.sh`
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
# 微信聊天记录自动备份脚本
|
||
|
||
# 配置
|
||
PBS_REPO='root@pam!pc02-weixin@pbs01:weixin_backup'
|
||
PBS_PASS='a21e8e89-a18f-4a01-b7f3-7aaa4a0db10e'
|
||
BACKUP_PATH='/mnt/d/yangxuan/Documents/xwechat_files/Backup/wxid_4931329313415'
|
||
LOG_FILE="$HOME/backup-wechat.log"
|
||
|
||
# 检测 PBS 是否在线
|
||
if ! ping -c 1 -W 2 pbs01 > /dev/null 2>&1; then
|
||
echo "[$(date)] PBS 不在线,跳过备份" >> "$LOG_FILE"
|
||
exit 0
|
||
fi
|
||
|
||
# 检测备份目录是否存在
|
||
if [ ! -d "$BACKUP_PATH" ]; then
|
||
echo "[$(date)] 警告:备份目录不存在,跳过" >> "$LOG_FILE"
|
||
exit 1
|
||
fi
|
||
|
||
# 执行备份
|
||
export PBS_REPOSITORY="$PBS_REPO"
|
||
export PBS_PASSWORD="$PBS_PASS"
|
||
|
||
echo "[$(date)] 开始备份微信记录..." >> "$LOG_FILE"
|
||
proxmox-backup-client backup weixin.pxar:"$BACKUP_PATH" >> "$LOG_FILE" 2>&1
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo "[$(date)] 备份成功 ✅" >> "$LOG_FILE"
|
||
else
|
||
echo "[$(date)] 备份失败 ❌" >> "$LOG_FILE"
|
||
fi
|
||
```
|
||
|
||
### 赋予执行权限
|
||
|
||
```bash
|
||
chmod +x ~/backup-wechat.sh
|
||
```
|
||
|
||
### 配置定时任务(cron)
|
||
|
||
每月 1 号凌晨 2:00 执行:
|
||
|
||
```bash
|
||
crontab -e
|
||
# 添加一行
|
||
0 2 1 * * /home/yangxuan/backup-wechat.sh
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ 验证与排查
|
||
|
||
### 检查备份是否成功
|
||
|
||
```bash
|
||
# 在 PC02 WSL 中
|
||
proxmox-backup-client snapshot list
|
||
|
||
# 或在 PBS 服务端
|
||
proxmox-backup-manager datastore list
|
||
proxmox-backup-manager datastore content weixin_backup
|
||
```
|
||
|
||
### 常见问题排查
|
||
|
||
| 问题 | 解决方案 |
|
||
| :--- | :--- |
|
||
| `zsh: event not found` | 用单引号包裹 `PBS_REPOSITORY` 值 |
|
||
| `missing permissions 'Datastore.Backup'` | 在 PBS 中授予 Token 相应权限 |
|
||
| `pbs01` 无法解析 | 改用 Tailscale IP 地址 |
|
||
| 备份目录不存在 | 确认 WSL 路径写法,如 `/mnt/d/...` |
|
||
|
||
---
|
||
|
||
## 📊 当前状态
|
||
|
||
| 项目 | 状态 |
|
||
| :--- | :--- |
|
||
| PBS 服务端 | ✅ 运行正常 |
|
||
| Datastore `weixin_backup` | ✅ 已创建,98GB 可用 |
|
||
| API Token `root@pam!pc02-weixin` | ✅ 已授权 |
|
||
| PC02 WSL 客户端 | ✅ 已安装 |
|
||
| 首次备份 | ✅ 已完成 |
|
||
|
||
---
|
||
|
||
## 🔗 相关命令速查
|
||
|
||
| 用途 | 命令 |
|
||
| :--- | :--- |
|
||
| 查看 PBS 任务 | `proxmox-backup-manager tasks list` |
|
||
| 查看 Datastore 内容 | `proxmox-backup-manager datastore content weixin_backup` |
|
||
| 查看备份快照 | `proxmox-backup-client snapshot list` |
|
||
| 查看磁盘使用 | `df -h /mnt/backup` |
|
||
| 查看 Tailscale IP | `tailscale ip` |
|
||
| 手动垃圾回收 | `proxmox-backup-manager garbage-collection start weixin_backup` |
|
||
|
||
---
|
||
|
||
文档已更新完毕,后续如有新增备份设备或调整策略,随时补充! 📝 |