批處理之FTP自動同步文件

1. FTP.exe工具

ftp.exe是Windows系統提供的一個FTP客戶端命令行工具。通過ftp.exe可以完成登錄,顯示遠程文件、下載、上傳、重命名、刪除遠程文件等操作。

1.1. 命令參數

FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [host]

  • -v 禁止顯示遠程服務器響應。
  • -n 禁止在初始連接時自動登錄。
  • -i 關閉多文件傳輸過程中的交互式提示。
  • -d 啓用調試。
  • -g 禁用文件名通配(請參閱 GLOB 命令)。
  • -s:filename 指定包含 FTP 命令的文本文件;命令在 FTP 啓動後自動運行。
  • -a 在綁字數據連接時使用所有本地接口。
  • -A 匿名登錄。
  • -x:send sockbuf 覆蓋默認的 SO_SNDBUF 大小 8192。
  • -r:recv sockbuf 覆蓋默認的 SO_RCVBUF 大小 8192。
  • -b:async count 覆蓋默認的異步計數 3
  • -w:windowsize 覆蓋默認的傳輸緩衝區大小 65535。
  • host 指定主機名稱或要連接到的遠程主機的 IP 地址。
  • mget 和 mput 命令將 y/n/q 視爲 yes/no/quit。
  • 使用 Ctrl-C 中止命令。
  • 注意:一般情況,我們主要是通過ftp.exe來調用ftp命令文件,主要使用如下方式:

FTP -s:ftpCMD.txt

1.2. FTP命令

FTP命令可以在ftp.exe命令行環境下單個運行,也可以集成文件中,通過FTP -s:ftpCMD.txt這樣的方式全部運行。以下列出所有的FTP命令。

  • ! 轉義到 shell
  • delete 刪除遠程文件
  • literal 發送任意 ftp 命令
  • prompt 在多個命令上強制交互提示
  • ? 打印本地幫助信息
  • debug 切換調試模式
  • ls 列出遠程目錄的內容
  • put 發送一個文件
  • send 發送一個文件,作用同put
  • mput 發送多個文件
  • status 顯示當前狀態
  • append 附加至文件
  • dir 列出遠程目錄的內容
  • mdelete 刪除多個文件
  • pwd 在遠程計算機上打印工作目錄
  • trace 切換數據包跟蹤
  • ascii 設置 ASCII 傳輸類型
  • disconnect 終止 ftp 會話
  • mdir 列出多個遠程目錄的內容
  • quit 終止 ftp 會話並退出
  • type 設置文件傳輸類型
  • bell 命令完成時發出聲響
  • get 接收文件
  • recv 接收文件,作用同get。
  • mget 獲取多個文件
  • quote 發送任意 ftp 命令
  • user 發送新用戶信息
  • binary 設置二進制傳輸類型
  • glob 切換本地文件名的元字符擴展
  • mkdir 在遠程計算機上創建目錄
  • verbose 切換詳細模式
  • bye 終止 ftp 會話並退出
  • hash 爲每個緩衝區傳輸切換打印“#”
  • mls 列出多個遠程目錄的內容
  • remotehelp 從遠程服務器獲取幫助
  • cd 更改遠程工作目錄
  • help 打印本地幫助信息
  • rename 重命名文件
  • close 終止 ftp 會話
  • lcd 更改本地工作目錄
  • open 連接到遠程 FTP
  • rmdir 在遠程計算機上刪除目錄

1.3. 重點命令介紹

在ftpCMD.txt中編寫FTP命令操作集,然後通過FTP -s:ftpCMD.txt來調用。

  • 通過prompt關閉或開啓確認提示,首次調用爲關閉提示,再次調用則爲開啓提示
  • 通過lcd命令來指定本地工作目錄

lcd 本地工作目錄

  • 通過get/recv下載遠程文件,本地文件名如果省略則和遠程文件同名

get RemoteFile [LocalFile]

  • 通過mget下載多個遠程文件,遠程文件至少1個,多個以空格區分

mget RemoteFiles [ …]

  • 通過put/send上傳本地文件,遠程文件如果省略則和本地文件同名

put LocalFile [RemoteFile]

  • 通過mput上傳本地文件到FTP服務器當前目錄,本地文件至少1個,多個以空格區分

mput LocalFiles [ …]

  • 通過mls保存遠程目錄下的文件及文件夾名,遠程文件如果用-代替表示所有,本地文件用-代替表示輸出到屏幕

mls RemoteFiles [ …]LocalFile

  • 通過type指定傳輸類型,Ftp 同時支持 ASCII 和Binary兩種文件傳輸類型。 默認的傳輸類型是 ASCII。在傳輸文本文件時應使用 ascii 命令。在 ASCII 模式中,將執行網絡標準字符集間的字符轉換。例如,行尾的字符在必要時根據目標操作系統進行轉換。在傳輸可執行文件時應該使用 binary 命令。在二進制模式中,文件是按一字節爲單位進行移動的。

type [TypeName]

  • quit退出FTP命令行模式進入CMD窗口

1.4. 示例

172.18.30.182是FTP服務器IP,mike是用戶名,123456是密碼,注意mike和123456之後不要用空格

open 172.18.30.182
mike
123456
prompt
type binary
lcd I:\ftp_local
mls - info.txt
get a.ini
mget 1.ini 2.ini
put info.txt
mput aa.ini bb.ini
quit

執行情況:
在這裏插入圖片描述

2. 自動同步

FTP主要完成同步的工作,而自動則需要使用Windows的定時任務命令行工具schtasks。
FTPSync.bat負責調用FTP命令文件

ftp -s:ftpCMD.txt

FTPSyncTask.bat則負責制訂定時任務,如每天的8點啓動

schtasks /create /tn "FTPSync" /tr “d:\FTPSync.bat" /sc daily /st 08:00:00 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章