標籤:
遠程伺服器是Linux作業系統,沒有ftp服務,可以ssh,資料庫每天2:00會自動建立一個備份檔案,本機電腦是windows作業系統,希望用sftp每天3:00下載遠程伺服器上的備份檔案。本地系統是linux的,可以參考另一篇文章“linux下自動sftp下載檔案”。
Windows下的sftp工具採用putty工具包中的psftp.exe,:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
命令列下輸入“psftp -h”可以查看psftp的用法。
PuTTY Secure File Transfer (SFTP) client
Release 0.59
Usage: psftp [options] [[email protected]]host
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-b file use specified batchfile
-bc output batchfile commands
-be don‘t stop batchfile processing if errors
-v show verbose messages
-load sessname Load settings from saved session
-l user connect with specified username
-P port connect to specified port
-pw passw login with specified password
-1 -2 force use of particular SSH protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for authentication
-noagent disable use of Pageant
-agent enable use of Pageant
-batch disable all interactive prompts
可以看到,我們能夠通過匯入一個指令檔sftp.txt來自動完成sftp下載檔案。命令格式如下:
psftp remotehost -l username -pw password < sftp.txt
現在的問題是,遠程伺服器的備份檔案採用的檔案名稱是自動建立的,存放在/logs目錄,檔案名稱格式為“dumpyyyymmdd.log”,比如dump20070310.log,那麼這個每天變化的檔案名稱如何能傳送到指令檔sftp.txt中呢?
只好google了,終於找到一個可以將date/time用於批次檔的程式realdate.com,:
http://www.huweb.hu/maques/realdate.htm
好了,現在開始寫批處理指令碼sftp.bat。
@echo off
# 寫psftp需要的指令檔sftp.txt
for /f %%i in (‘realdate.com /d‘) do (set remotelogname=%%i)
echo cd /logs > sftp.txt
echo get dump%remotelogname%.log >> sftp.txt
echo bye >> sftp.txt
# 寫記錄檔sftp.log
echo --------------------------------------- >> sftp.log
for /f %%i in (‘realdate.com /f="CCYY-MM-DD"‘) do (set locallogdate=%%i)
for /f %%i in (‘realdate.com /f="hh:mm:ss"‘) do (set locallogtime=%%i)
echo %locallogdate% %locallogtime% >> sftp.log
psftp remotehost -l username -pw password < sftp.txt > sftp.log
echo. >> sftp.log
echo done. >> sftp.log
將psftp.exe、realdate.com和sftp.bat放在同一檔案夾中,為sftp.bat建立計劃任務,半夜就可以安心睡覺了。
#########2
ftp/sftp自動上傳、下載指令碼 標籤: path指令碼userserver 2012-02-13 18:50 5160人閱讀 評論(0) 收藏 舉報 本文章已收錄於:
分類: SHELL
著作權聲明:本文為博主原創文章,轉載請寫明出處。
ftp指令碼:
[plain] view plain copy print?
- #! /bin/sh
-
- server=172.23.3.150
- remotedir=/users/tmp/
- filename=test.txt
-
- ftp -in << EOM
- open $server
- user username password
- bin
- cd $remotedir
- put $filename
- bye
- EOM
#! /bin/shserver=172.23.3.150remotedir=/users/tmp/filename=test.txtftp -in << EOM open $server user username password bin cd $remotedir put $filename byeEOM
sftp指令碼:
[plain] view plain copy print?
- #!/bin/sh
-
- HOST=172.23.3.150
- USER=root
- PASSWORD=1234rewq
- FILENAME=test.txt
- LOCAL_PATH=/home/ligt/WindRiver/
- REMOTE_PATH=/users/tmp/
-
- lftp -u $USER,$PASSWORD sftp://$HOST << EOM
- lcd $LOCAL_PATH
- cd $REMOTE_PATH
- put $TARGET
- bye
- EOM
-
- echo "Success!"
#!/bin/shHOST=172.23.3.150USER=rootPASSWORD=1234rewqFILENAME=test.txtLOCAL_PATH=/home/ligt/WindRiver/REMOTE_PATH=/users/tmp/lftp -u $USER,$PASSWORD sftp://$HOST << EOM lcd $LOCAL_PATH cd $REMOTE_PATH put $TARGET byeEOMecho "Success!"
轉:Windows下用sftp自動下載檔案