Table of Contents
方案
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: