2017年12月4日 星期一

☆Windows/Batch/Command Windows批次上傳FTP指令

[Windows][Batch][Command] 


[需求說明][Request]

Windows Server Version -> 2012

Windows Server需要定期的將備份資料,上傳至異地端的FTP Server。
要實現這個功能,一般我們會用Windows排程器+Batch Command(批次檔案)來處理,Windows排程器也是就Windows作業系統內建的排程軟體,一般從系統管理中可以找到(每個版本可能有點不同);Windows Batch則是早期從DOS時代就開始有的東西,如果比較資深的相信會很有感觸...這東西已經有點年代了(小弟我也有點年紀了XD),延申到Windows Server 2012之後的Power Shell是不一樣的東西,Power Shell是這幾年新的技術…有機會再來研究研究。

下面有兩個範例提供參考,一個是用純Windows指令上傳,另一個則是借用WinSCP上傳至FTP。

[實例][Example]
功能:自動上傳檔案至FTP,並刪除過期舊檔。
Test.bat 內容如下:

set PathDest=E:\backup
set FileCount=0

For /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set dt=%%a%%b%%c)

For /f "tokens=1-4 delims=:." %%a in ('echo %time%') do (set tm=%%a%%b)

For /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set dt2=%%a/%%b/%%c)

For /f "tokens=1-4 delims=:." %%a in ('echo %time%') do (set tm2=%%a:%%b)

FOR /f "tokens=1 " %%i IN ('hostname') DO (SET HOST=%%i)

set bkupfilename=Daily_backup_%dt%-%tm%.bak


xcopy  "E:\backup\*"   E:\backup\Daily /D/K/E/Y/C/I/H

del "E:\backup\*" /q

for /R %PathDest% %%A in (*) do set /a FileCount+=1

if %FileCount% GTR 7(^
forfiles /p %PathDest% /s /d -7 /c "cmd /c del /q @path"
)

E:
cd E:\backup\dpump

REM Generate the script. Will overwrite any existing temp.txt
echo open ftpservername> temp.txt
echo user>> temp.txt
echo password>> temp.txt
echo bin>> temp.txt
echo put %bkupfilename%>> temp.txt
echo quit>> temp.txt

REM Launch FTP and pass it the script
ftp -s:temp.txt

REM Clean up.
del temp.txt




[實例][Example]
功能:利用winscp工具軟體上傳檔案至FTP。

test.txt
open ftp://user:password@example.com/
put d:\bak\*.* /
exit

batch command
WinSCP.com /ini=nul /log=ftpupload.log /script=test.txt







沒有留言:

張貼留言