使用 Passive Mode command line Ftp 上傳資料

因公司備份需要,每天都必須要外點傳備份資料回總公司備查,台北內已有 FileZilla FTP Server, 但這台 Server 放置在防火牆內並僅支援 Passive Mode,原來想採用 Windows FTP 指令來上傳,並上網搜尋到很多資料,發現 Ftp 可以吃一個腳本檔案來模擬執行命令。

其方式如下:

建立一個文字檔案, 裡面包含

—Start here

Open ftp.site.com           << 你的 ftp ip 或 FQDN

Username                       << ftp 帳號

Password                         << ftp 密碼

mput local_filename      <<    上傳指定檔案

bye                                  <<    斷線

—End here

把以上檔案不包含 << 註解存成一個文字檔, 如 Upload.ftp;測試時只要打開 DOS box 打入 ftp –s upload.ftp 就會自動連線上傳檔案。

當 然事情總沒有那麼完美,每次傳送總是遇到 425 cannot create data connection 的錯誤,如前述我們的FTP Server 是採用 Passive Mode,查了資料才知道微軟 FTP Command line 是不支援的,以上就變成白工。

既然做一半了就一定要完成,只好在網路上找 command line ftp 且有支援 Passive mode,幸運的馬上就找到 ncftp,到下載區找到 for windows 的版本安後就可以利用指令來控制她。

其指令參考ncftp 網頁上的 ncftpput 指令, 一行就可以解決,

ncftpput –u username –p password ftp.site.com / local_filename

就可以搞定,雖然可以在 Windows 排程上面直接做,但我還是寫了個批次檔包起來,未來需要上傳多個檔案就可以重複執行就好。

發表迴響