需求:
有一臺windows服務器上跑着mysql的一些應用,如今須要將mysql的數據天天備份,並經過ftp上傳到指定的存儲服務器上
要是在linux上,shell 腳本很容易就搞定了,在windows上習慣了點鼠標,哪裏來的腳本,一時還真不知道該怎麼弄.baidu,google得知能夠經過批處理或者vbs腳本實現.
批處理是比較簡單的,畢竟dos的經常使用命令仍是知道的
解決思路:
使用批處理文件,實現備份和上傳的功能
將批處理文件加到計劃任務中實現每日定時執行腳本
完整的批處理文件以下 文件名dbbk.bat
@echo off
:: this batch is to backup the db files on windows to linux server
:: created by yahoon
:: 2008.4.9
::backup the mysql db
mysqldump -uroot –pxxxx demo>c:\demo %date:~0,10%.sql
::pause
:: wait press any key to continue
:: ready to delete
::form the ftp command file
echo open 服務器ip>c:\ftpdemo.txt
echo ftp用戶名>>c:\ftpdemo.txt
echo ftp密碼>>c:\ftpdemo.txt
echo put c:\ demo %date:~0,10%.sql >>c:\ftpdemo.txt
echo bye>>c:\ftpdemo.txt
::transfer the file to server via ftp
ftp -i -s:c:\ftpdemo.txt
::pause
::clean the tmp files
del c:\ftpdemo.txt
del c:\ demo %date:~0,10%.sql
說明:
1. 雙冒號::後面的內容爲註釋,不會執行
2. 兩處pause語句是調試的時候用的,運行pause的結果是屏幕上顯示」按任意鍵繼續」,腳本等着用戶按鍵纔會往下執行
3. demo %date:~0,10%.sql 是備份的文件名,最後的結果是demo20080409.sql ,其中%date:~0,10%表示的是date命令輸出的字符串中從第0個開始的10個字符.這點很重要,由於我在英文的OS上,執行這個腳本在備份的時候報文件名錯誤.這是由於當你執行date命令的時候結果是
Tue 04/08/2008
要達到demo20080409.sql這樣的效果文件名就要這麼寫demo%date:~10,4%%date:~4,2%%date:~7,2%.sql
最後提一下寫的過程當中解決的一個問題
因爲腳本的思路是作備份,而後經過ftp上傳
因此最開始寫的時候沒有::form the ftp command file 這一段.而是寫好一個ftpdemo.txt放在那
這就出現了一個問題,因爲生成的sql文件名天天都變,這樣ftp命令也得改.寫死的ftpdemo.txt文件確定就實現不了.
想出了個笨主意是批處理文件裏面生成的sql文件就定義死文件名爲demo.sql,這樣ftpdemo.txt文件也能夠寫死.而後等上傳之後,再經過linux的腳本經過crontab來天天更名.