使用 rclone 备份远程 Windows 服务器文件
前言
本地、远程都是 Windows 时,可以用 rclone 通过 SFTP 把远程大目录拉到本机备份盘。
远程需先装好 OpenSSH 服务器;本机只需 rclone.exe 和一次 config,之后重复执行同一条 copy 即可增量补传。
下文示例把 rclone 放在 D:\Tools\rclone\,远程名 win_src,源路径 D:/data/wwwjarapi/jkqfile/static,目标 D:\Backup\jkqfile_bak,请按你的环境替换。
远程 OpenSSH
在源服务器上以管理员身份安装 OpenSSH 服务端(详见 Microsoft 文档)。
安装服务端
先查看本机可选组件里的准确名称与状态(不同版本后缀可能略有差异):
1 | Get-WindowsCapability -Online | Where-Object Name -like "OpenSSH.Server*" |
State 已是 Installed 则跳过安装,直接看下一节「启动服务」。
方式一:设置界面
适合 Add-WindowsCapability 报错或走 WSUS 的环境。
- 打开 设置 → 应用 → 可选功能(服务器上可能是 设置 → 系统 → 可选功能)。
- 点 添加功能 / 查看功能。
- 搜索 OpenSSH 服务器,安装。
方式二:PowerShell 在线安装
用查询结果里的 Name 安装,避免手写版本后缀不对:
1 | Get-WindowsCapability -Online | |
若仍失败,常见错误 0x800f0954 多与 WSUS 有关:组策略里启用「指定可选组件安装和组件修复的设置」,并勾选 直接从 Windows Update 下载修复内容和可选功能,而不是从 WSUS,再重试。
s
启动服务
安装完成后执行:
1 | Start-Service sshd |
防火墙需放行 TCP 22(或你改的 SSH 端口)。
本地可先执行 ssh 用户名@源IP 或 sftp 用户名@源IP,能连上再配 rclone。
备份账号
下文统一用 Windows 用户名 + 密码 登录 SFTP,不用公钥。
添加用户
Windows 上的 OpenSSH 没有单独的 SSH 用户表,用的就是源机上已有的本地或域账号及其登录密码。
在源服务器上建议单独建一个备份专用账号(示例名 backup_user):
1 | net user backup_user 你的强密码 /add |
也可在「计算机管理 → 本地用户和组」里新建用户并设置密码。
授予 NTFS 读取
SFTP 读文件走的是 NTFS 权限,不必给该目录做 SMB「共享」(除非你还用网络邻居访问)。
图形界面(源服务器上操作):
- 资源管理器中右键
D:\data\wwwjarapi\jkqfile\static→ 属性 → 安全 → 编辑。 - 点 添加,输入
backup_user→ 检查名称 → 确定。 - 选中列表里的
backup_user,在下方权限区勾选 读取、读取和执行、列出文件夹内容(三项通常一起选;不要勾「写入」「修改」)。 - 确定 保存。若提示继承,选 仅应用到本文件夹、子文件夹和文件 即可覆盖整个备份树。
域账号在「添加」里写 域名\backup_user。
改完后可用 backup_user 登录源机(或 runas /user:backup_user cmd),看能否打开 D:\data\wwwjarapi\jkqfile\static 里的文件。
若密码登录失败,在源机编辑 C:\ProgramData\ssh\sshd_config,确认存在且未注释:
1 | PasswordAuthentication yes |
保存后执行:
1 | Restart-Service sshd |
下载 rclone
前往 rclone.org/downloads 下载 Windows AMD64 压缩包,解压得到 rclone.exe,放到例如 D:\Tools\rclone\ 目录。
配置远程源
打开 CMD 或 PowerShell,进入交互配置(只需做一次):
1 | D:\Tools\rclone\rclone.exe config |
按提示操作:
- 输入 n 新建 remote,名称填 win_src
- 类型选 sftp 对应的值是
55 - 填写源服务器 IP、Windows 用户名、密码(与上一节备份账号一致)
- 询问私钥路径时直接回车(留空,表示用密码)
- 其余项默认回车
- 输入 q 退出
配置写在 %APPDATA%\rclone\rclone.conf,勿泄露或提交到仓库。
主机指纹
首次连接可能出现 NOTICE: No host key validation is being performed,表示 rclone 尚未校验 SSH 主机密钥,连接仍能继续,但有中间人风险。
在本机先用 OpenSSH 连一次源机并信任指纹(会写入 known_hosts):
1 | ssh backup_user@源服务器IP |
输入 yes 接受指纹后 exit 退出即可。
本机登录名即当前运行 rclone 的 Windows 用户文件夹名(不是源机上的 backup_user)。
在 PowerShell 中可查看:
1 | echo "$env:USERPROFILE\.ssh\known_hosts" |
也可直接编辑 %APPDATA%\rclone\rclone.conf,在 [win_src] 段增加一行(把 Administrator 换成上一步的 $env:USERNAME):
1 | known_hosts_file = C:\Users\DELL\.ssh\known_hosts |
之后 NOTICE 应消失;若源机重装系统或换了 SSH 主机密钥,需按 rclone SFTP 文档 更新 known_hosts。
测试
带完整路径测试:
1 | D:\Tools\rclone\rclone.exe lsd win_src:/D:/data/wwwjarapi/jkqfile/static |
列目录成功后再执行 copy。
拉取备份
copy 只把远程文件复制到本地,不会删除本地已有文件;中断后重新执行相同命令会跳过已传完的文件,只传剩余部分。
源服务器全程不会在磁盘上生成临时打包文件。
基本拉取(带进度):
1 | D:\Tools\rclone\rclone.exe copy win_src:/D:/data/wwwjarapi/jkqfile/static D:\Backup\jkqfile_bak --progress |
生产环境可在上一条基础上增加并发、限速与日志(参数按带宽与磁盘调整):
1 | D:\Tools\rclone\rclone.exe copy win_src:/D:/data/wwwjarapi/jkqfile/static D:\Backup\jkqfile_bak ` |
远程路径在 SFTP 下常写成 win_src:/D:/data/wwwjarapi/jkqfile/static 这种形式;若报错,先用下面命令试列目录再改路径。
若希望本地目录与远程完全一致(本地多出的旧文件会被删),改用 sync,首次建议加 –dry-run 预览。
计划任务
定时备份可在「任务计划程序」里 nightly 执行上节的 copy 命令,或写入 D:\Tools\rclone\backup.ps1 后由计划任务调用 powershell.exe -File D:\Tools\rclone\backup.ps1。
运行任务的 Windows 用户必须能读取 %APPDATA%\rclone\rclone.conf(其中已保存 SFTP 密码)。
总结
- 源机安装 OpenSSH,用 net user 等建好备份专用 Windows 账号(用户名 + 密码)与目录读权限
- 本机 config 建 win_src,SFTP 填 IP、用户名、密码,私钥留空
- 用 copy 拉取;断线重跑同命令即可续传,源端无临时文件