将本地 Windows 文件夹同步到远程服务器
2024-09-04 tech windows linux 2 mins 972 字
这个脚本使用 PSCP 和 Plink 工具,PSCP 用于文件传输,Plink 可以用来执行远程命令。确保已安装 PuTTY 工具包中的 PSCP 和 Plink 工具,并将其路径添加到系统的环境变量中。
@echo off
:: 定义本地文件夹和远程服务器信息
set LOCAL_DIR=C:\Workspace\online\
set REMOTE_SERVER=user@1.2.3.4
set REMOTE_DIR=/kelutmp
set PASSWORD=password
:: 检查本地文件夹是否存在
if not exist "%LOCAL_DIR%" (
echo Local directory does not exist: %LOCAL_DIR%
exit /b
)
:: 检查本地文件夹是否为空
for /F "delims=" %%F in ('dir /b "%LOCAL_DIR%"') do set NON_EMPTY=1
if not defined NON_EMPTY (
echo Local directory is empty: %LOCAL_DIR%
exit /b
)
set FILE_COUNT=0
for /r "%LOCAL_DIR%" %%f in (*) do set /a FILE_COUNT+=1
if "%FILE_COUNT%"=="0" (
echo Local directory is empty: %LOCAL_DIR%
exit /b
)
:: 使用 pscp 将本地文件夹中的所有文件同步到远程服务器
pscp -r -pw "%PASSWORD%" "%LOCAL_DIR%*" %REMOTE_SERVER%:%REMOTE_DIR%
:: 如果同步成功,清空本地文件夹
if %errorlevel%==0 (
echo Sync successful, clearing local directory: %LOCAL_DIR%
rmdir /s /q "%LOCAL_DIR%"
mkdir "%LOCAL_DIR%"
) else (
echo Sync failed, local directory not cleared.
)