有时候,出于安全方面的考虑,除了在服务器上做备份外,还需要进行异地备份。现在一般使用的都是 Linux 服务器,而备份服务器为了便于操作,有可能使用的是 Windows 服务器。这样,为了进行异地备份,可能得借助于第三方同步软件。
Putty 是一个 SSH、Telnet 和 Rlogin 客户端,它自带的 psftp.exe 是一个命令行交互 SFTP 客户端,单文件、体积小,也是一个不错的选择。
这里演示通过编写批处理脚本,结合 psftp.exe 工具来实现从 Linux 服务器上下载文件的功能。
@echo off
rem 作者:靑龍一笑(C.S.Ricen)
rem 功能:通过 sftp 下载文件
set Y=%date:~0,4%
set M=%date:~5,2%
set D=%date:~8,2%
set DG=1
set/a vY1=%Y% %% 400
set/a vY2=%Y% %% 4
set/a vY3=%Y% %% 100
if %vY1%==0 (
set var=true
) else (
if %vY2%==0 (
if %vY3%==0 (
set var=false
) else (
set var=true
)
) else (
set var=false
)
)
set LY=%Y%
set LM=%M%
if %M:~0,1%==0 (
set M=%M:~1,1%
)
if %D:~0,1%==0 (
set D=%D:~1,1%
)
if %D% GTR %DG% (
set/a LD=%D%-%DG%
) else (
if %M%==1 (
set/a LY=%Y%-1
) & (
set/a LM=12+%M%-1
) & (
set/a LD=31+%D%-%DG%
) else (
set/a LM=%M%-1
if %M%==3 (
if %var%==false (
set/a LD=28+%D%-%DG%
) else (
set/a LD=29+%D%-%DG%
)
)
for %%a in (2 4 6 8 9 11) do (
if "%M%"=="%%a" (
set/a LD=31+%D%-%DG%
)
)
for %%b in (5 7 8 10 12) do (
if "%M%"=="%%b" (
set/a LD=30+%D%-%DG%
)
)
)
)
if %LM% LSS 10 set LM=0%LM:~-1%
if %LD% LSS 10 set LD=0%LD:~-1%
set lDate=%LY%%LM%%LD%
set SRC=/usr/ricen_file/dbBackUp
set DEST=D:\dbBackUp
set HOST=10.18.16.168
set PORT=22
set USER=root
set PASS=webDB0918
echo cd %SRC% > sftp.tmp
echo lcd %DEST% >> sftp.tmp
echo get dis-%lDate%.sql.gz >> sftp.tmp
echo bye >> sftp.tmp
psftp.exe %HOST% -P %PORT% -l %USER% -pw %PASS% -b sftp.tmp
del /q sftp.tmp
exit
Copyright © 2005-2023 by www.ricensoftwares.com.cn All Rights Reserved.