2台windows异地备份方案

  • Post author:
  • Post category:技术
  • Post comments:0评论

方案

Restic + Rest-Server

异地服务器(接收端)

准备好程序,

C:\rest-server\rest-server.exe

准备一个存备份的目录

D:\BackupRepo\

初始化账号:打开 CMD 命令提示符,创建一个连接账号(例如用户名为 backupuser):

cd C:\rest-server
rest-server.exe --path D:\BackupRepo --create-user backupuser

(根据提示输入并记住密码)

rest-server.exe --path D:\BackupRepo --append-only --listen :8000

--append-only:核心参数。开启后,只允许客户端上传新数据,拒绝一切删除或修改历史备份的请求。
窗口不要关,要不自己注册成系统服务也行

本地服务器(发送端)

准备好程序,

C:\restic\restic.exe

然后创建一个批处理脚本 run_backup.bat,脚本内容如下

@echo off
chcp 65001 >nul
echo =========================================
echo       Restic 异地 Append-Only 备份任务
echo =========================================

:: -------------- [用户配置区] --------------
:: Restic 仓库加密密码(请务必牢记,丢失将无法恢复数据!)
set RESTIC_PASSWORD=YourStrongEncryptionPassword123!

:: 异地 rest-server 的访问地址与凭据
:: 格式:http://用户名:密码@异地IP:8000/用户名
set RESTIC_REPOSITORY=http://backupuser:YourRestServerPassword@192.168.1.100:8000/backupuser

:: 本地需要备份的文件夹路径(多个路径用空格分隔)
set BACKUP_TARGETS="D:\Data" "C:\Users\Administrator\Documents"

:: 排除不需要备份的文件/文件夹(可选,不使用请留空)
set EXCLUDE_LOGS=--exclude="*.tmp" --exclude="*.log"
:: ------------------------------------------

:: 1. 检查并自动初始化仓库(仅首次生效)
echo [1/2] 检查远程仓库状态...
c:\restic\restic.exe cat config >nul 2>&1
if %errorlevel% neq 0 (
    echo 仓库未初始化,正在初始化远程仓库...
    c:\restic\restic.exe init
    if %errorlevel% neq 0 (
        echo [错误] 仓库初始化失败,请检查异地 rest-server 是否启动或网络是否连通!
        goto END
    )
    echo 仓库初始化成功!
) else (
    echo 仓库已就绪。
)

:: 2. 执行备份
echo [2/2] 开始执行增量备份...
c:\restic\restic.exe backup %BACKUP_TARGETS% %EXCLUDE_LOGS% --tag auto-daily

if %errorlevel% equ 0 (
    echo =========================================
    echo [成功] 备份完成!时间: %date% %time%
    echo =========================================
) else (
    echo =========================================
    echo [失败] 备份过程中出现错误!
    echo =========================================
)

:END
:: 防止双击运行时直接关掉窗口,静默执行时会自动结束
timeout /t 10

设置本地自动定时运行
利用 Windows 自带的 任务计划程序(Task Scheduler) 实现无人值守备份:

按 Win + R 输入 taskschd.msc 回车。

点击右侧 “创建任务...”。

常规 页签:

名称:Restic_Daily_Backup

选择 “不管用户是否登录都要运行”,并勾选 “使用最高权限运行”。

触发器 页签:

新建 -> 选择 按预定时间(例如:每天 凌晨 2:00)。

操作 页签:

新建 -> 操作选择 启动程序。

程序或脚本:浏览选中 C:\restic\run_backup.bat。

起始于:填写 C:\restic\(重要,确保脚本相对路径正常)。

点击确定,输入当前 Windows 账号密码保存即可。

清理

因为异地开启了 --append-only,本地发起的清理指令均会被拦截,异地存储空间会只增不减。

在异地 Windows 服务器本地打开 CMD

set RESTIC_PASSWORD=YourStrongEncryptionPassword123!
c:\restic\restic.exe -r D:\BackupRepo\backupuser forget --keep-daily 30 --keep-monthly 12 --prune

恢复

set RESTIC_PASSWORD=YourStrongEncryptionPassword123!
set RESTIC_REPOSITORY=http://backupuser:YourRestServerPassword@192.168.1.100:8000/backupuser

查看备份数据

C:\restic\restic.exe snapshots

浏览某个快照里的具体文件列表(下面的命令自行替换id)

C:\restic\restic.exe ls a1b2c3d4

恢复(下面的命令自行替换id)

C:\restic\restic.exe restore a1b2c3d4 --target D:\RestoreTest

还有一种恢复方案,图形化浏览:把备份挂载为 Windows 本地虚拟盘
如果你觉得命令行查看文件层级太麻烦,Restic 支持通过 mount 命令,把异地备份仓库直接挂载为 Windows 的一个本地盘符(比如 Z: 盘)。
需要先在 Windows 上安装开源的 WinFsp 驱动

C:\restic\restic.exe mount Z:
0 0 votes
文章评分
订阅
提醒
guest
0 评论
最旧
最新 得票最多