PVE备份到115网盘
一、飞牛nas中远程挂载115网盘
二、修改115网盘到本地目录
参考:将各类网盘/远程存储映射为飞牛本地存储vol1 - 攻略分享 飞牛私有云论坛 fnOS
三、飞牛SMB或者NFS分享设置115网盘目录
并且在PVE中mount
四、PVE中添加脚本
脚本地址:/root/vzdump-sync-to-115.sh
脚本作用:
PVE 先备份到本地真实目录 / NAS真实目录
备份成功后 hook 脚本再复制到 115 映射目录
PowerShell 全选
#!/bin/bash
set -euo pipefail
# PVE 会传入阶段名,例如 backup-start、backup-end、job-end 等
PHASE="${1:-}"
MODE="${2:-}"
VMID="${3:-}"
# 只在单台 VM/CT 备份成功后执行同步
[ "$PHASE" = "backup-end" ] || exit 0
DEST="/mnt/115/PVEData/dump"
# TARGET/TARFILE 在不同 PVE 版本或备份类型里可能不同,所以做兼容处理
SRC="${TARGET:-${TARFILE:-}}"
# 如果环境变量里没有备份文件路径,就从 DUMPDIR 里按 VMID 找最新备份
if [ -z "$SRC" ] || [ ! -f "$SRC" ]; then
SRC="$(find "${DUMPDIR:-/var/lib/vz/dump}" -maxdepth 1 -type f \
\( -name "vzdump-qemu-${VMID}-*.vma.*" -o -name "vzdump-lxc-${VMID}-*.tar.*" \) \
-printf '%T@ %p\n' | sort -nr | head -1 | cut -d' ' -f2-)"
fi
[ -n "$SRC" ] && [ -f "$SRC" ] || {
echo "找不到 VMID=${VMID} 的备份文件,跳过同步"
exit 1
}
mkdir -p "$DEST"
echo "开始同步备份文件:$SRC -> $DEST/"
# 115 映射目录 rename 可能失败,所以不要依赖 rsync 默认临时文件改名逻辑
cp -v "$SRC" "$DEST/"
# 同步对应日志文件,方便以后排查
if [ -n "${LOGFILE:-}" ] && [ -f "$LOGFILE" ]; then
cp -v "$LOGFILE" "$DEST/"
fi
echo "同步完成"脚本添加执行权限
PowerShell 全选
chmod +x /root/vzdump-sync-to-115.sh测试:
Markup 全选
vzdump 161 \
--storage local \
--mode stop \
--compress zstd \
--script /root/vzdump-sync-to-115.sh
注意两点:
- cp 到 115 期间,PVE 备份任务会一直显示运行中,直到复制完成。
- 如果 115 映射目录断开或上传失败,备份本地文件仍然已经生成,只是同步失败。
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 张国生


