如何使用WinSCP同步Windows双文件夹到Linux服务器双目录并后台运行
多文件夹同步+后台运行解决方案
方案1:修改现有WinSCP PowerShell脚本适配多文件夹
原有官方单文件夹同步脚本仅需做少量调整即可支持多文件夹同步,无需替换核心同步逻辑:
- 把脚本内原本固定的单组远程、本地路径改为数组格式存储多组配对
- 在外层套入循环遍历每组配对执行同步逻辑即可
核心修改示例如下:
# 定义多组同步配对,每组依次为远程Linux文件夹路径、本地Windows文件夹路径 $syncPairs = @( @("/服务器/远程文件夹1", "C:\本地\存储文件夹1"), @("/服务器/远程文件夹2", "C:\本地\存储文件夹2") ) # 循环执行每一组同步任务 foreach ($pair in $syncPairs) { $remotePath = $pair[0] $localPath = $pair[1] # 此处直接粘贴原有官方示例的同步逻辑,把原本的固定路径替换为上面的$remotePath、$localPath变量即可 }
方案2:实现后台无窗口运行
方法A:通过Windows任务计划程序配置(操作最简单)
- 打开Windows任务计划程序,创建新任务,触发器根据需求选择「计算机启动时」或「用户登录时」
- 操作类型选择「启动程序」,程序路径填写
powershell.exe - 附加参数填写
-WindowStyle Hidden -ExecutionPolicy Bypass -File "修改后的同步脚本完整本地路径.ps1" - 安全选项勾选「不管用户是否登录都要运行」、「使用最高权限运行」,保存即可
- 配置完成后任务会在后台静默执行,不会弹出PowerShell前台窗口
方法B:封装为Windows系统服务(稳定性更高,适合长期托管)
适合需要7*24小时同步、无需用户登录也能运行的场景:
- 下载NSSM工具并放到系统环境变量可识别的路径下
- 管理员权限打开命令提示符,执行
nssm install WinSCPFolderSync - 弹出的配置窗口中,程序路径选
powershell.exe,参数填写-ExecutionPolicy Bypass -File "修改后的同步脚本完整本地路径.ps1" - 切换到登录标签,选择「本地系统账户」,勾选「允许服务与桌面交互」
- 保存后在系统服务列表找到
WinSCPFolderSync,设置启动类型为自动,启动服务即可,服务会常驻后台运行
轻量替代方案:使用Rclone实现同步
如果不想修改原有WinSCP脚本,可以用Rclone配置SFTP连接到Linux服务器,编写简单的批处理脚本实现多文件夹同步:
@echo off :start rclone sync 配置的Rclone远程节点名:/远程文件夹1 C:\本地\存储文件夹1 rclone sync 配置的Rclone远程节点名:/远程文件夹2 C:\本地\存储文件夹2 :: 此处300为同步间隔秒数,可根据需求调整 timeout /t 300 /nobreak >nul goto start
该批处理同样可以通过上述任务计划、NSSM封装的方式实现后台运行。
内容的提问来源于stack exchange,提问作者SEU
相关产品推荐
相关产品推荐

