簡介
ftp 是 標準文件傳輸協(xié)議的用戶界面, 它允許用戶與遠程網(wǎng)絡(luò)站點之間傳輸文件
要使用 ftp 客戶端上傳文件的話,需要一個 ftp 服務(wù)器,本文主要介紹 ftp 客戶端上傳相關(guān)的命令,默認已經(jīng)安裝好FTP服務(wù)器了
FTP服務(wù)器的搭建在中有詳細的介紹,感興趣的可以去看看
安裝
使用下面的命令安裝 FTP 客戶端
yum ftp
常用選項
進入 ftp 命令行之后,就可以執(zhí)行上傳、下載相關(guān)的命令,由于命令比較多,下面只列出一些常用的命令以及一些常用選項
命令說明
put
本地文件上傳到FTP服務(wù)器
mput
本地文件批量上傳到FTP服務(wù)器
get
FTP服務(wù)器文件下載到本地
mget
FTP服務(wù)器批量下載到本地
刪除FTP服務(wù)器上的文件
批量刪除FTP服務(wù)器上的文件
ls
FTP服務(wù)器當前目錄中的文件詳細信息
lcd
更換本地工作目錄
cd
FTP服務(wù)器上更換目錄
cdup
FTP服務(wù)器當前目錄返回到上一層目錄
pwd
當前位于FTP服務(wù)器上哪個目錄
nlist
列出FTP服務(wù)器指定目錄中的文件名列表
設(shè)置傳輸類型為二進制傳輸
open
在指定的IP和端口上,與FTP建立一個連接
bye
終止與FTP服務(wù)器的會話,退出FTP客戶端
選項說明
-i
文件批量傳輸時,關(guān)閉交互提示
-n
客戶端連接上FTP服務(wù)器時,禁止自動登錄
-v
打印FTP服務(wù)器返回的所有消息
!
本地機器上執(zhí)行命令
上傳單個文件
上傳單個文件主要使用put命令,它的格式是put local-file [-file], 其中l(wèi)ocal-file表示本地文件,默認是本地當前目錄,-file是FTP服務(wù)器上的文件,如果不指定的話,上傳到服務(wù)器之后,默認跟本地文件名同名
下面是把本地/root//haa.txt上傳到服務(wù)器的/files目錄的步驟
1、輸入帳號密碼,登錄FTP服務(wù)器
2、'!pwd' 命令表示本地機器當前目錄
3、'!ls' 命令表示列出本地當前目錄中的文件
4、'pwd' 命令是當前處于FTP服務(wù)器的哪個目錄,這個目錄是相對于用戶鎖定目錄而言的
關(guān)于鎖定目錄請參考上一篇文章
'cd files' 命令是服務(wù)器當前目錄( '/' ) 切換到 '/files' 目錄
'ls' 是列出FTP服務(wù)器當前目錄中的文件,從結(jié)果可以看出,服務(wù)器當前目錄中沒有任何文件
5、'binary' 以二進制模式上傳,一般在上傳之前設(shè)置下即可
6、'put haa.txt' 把本地當前目錄中的 'haa.txt' 上傳到服務(wù)器的 '/files' 目錄中
上傳成功之后,會有 'Transfer complete' 的提示
如果把本地其他目錄的文件上傳到服務(wù)器的話,需要指定上傳到服務(wù)器的文件名,
比如:本地存在 /root/ftptest/test/test.txt 文件
可以使用 'put ./test/test.txt test.txt' 命令將它上傳到服務(wù)器的 '/files' 目錄
7、上傳完成之后,執(zhí)行 'nlist *' 命令查看下服務(wù)器當前目錄中的文件列表
此處是用來確認是否上傳成功,從結(jié)果可以看出,服務(wù)器當前目錄的文件列表中有 'haa.txt' 文件
所以此次上傳成功
8、操作完成之后,執(zhí)行 'bye' 命令斷開連接并退出FTP客戶端
批量上傳
批量上傳主要使用mput命令,后面可以接文件名列表,也可以接含有通配符的文件名,命令能正確獲取通配符指代的文件,文件名之間以空格隔開
下面是將/root/目錄下的haa.txt、hab.txt、ta.log、tb.log文件上傳到服務(wù)器的/files目錄的步驟
上圖省略了FTP登錄輸入帳號密碼的步驟,其中第一條執(zhí)行的命令是ftp -i -v 192.168.70.20 48888
選項-i表示關(guān)閉交互提示,在批量上傳的時候很有用,mput批量上傳的時候,會逐個文件調(diào)用put命令進行上傳ftp get文件到本地,如果沒有關(guān)閉交互提示ftp get文件到本地,每次上傳文件的時候都需要輸入y字符確認,當關(guān)閉了交互提示后,就能不間斷的上傳,直到所有的文件上傳成功
1、本地當前所處目錄
2、服務(wù)器當前所處目錄,然后進入 '/files' 目錄
3、以二進制模式上傳
4、批量上傳文件,'mput' 是批量上傳的命令,后面可以接 文件名或者通配符組成的文件名
它們之間用空格隔開,
這里表示批量上傳 'haa.txt、hab.txt、ta.log、tb.log'
執(zhí)行 'mput haa.txt hab.txt *.log' 命令之后,會逐個文件的上傳到服務(wù)器
每個文件都會有上傳結(jié)果信息返回,從圖中的結(jié)果可以看出
總共上傳了 'haa.txt hab.txt ta.log tb.log' 四個文件,全部都上傳成功
5、上傳操作之后,通過 'nlist *' 命令確認上傳結(jié)果是成功的
6、退出客戶端
一鍵上傳
每次上傳文件都需要輸入一些重復(fù)的 FTP 命令其實是比較繁瑣的操作,可以將這些重復(fù)又繁瑣的命令合并到一個腳本中,變成一個一鍵上傳的 shell 腳本,具體的內(nèi)容如下:
#!/bin/sh
#FTP用戶名
FTP_USER=mytest
#FTP密碼
FTP_PAWD=12345678
#FTP服務(wù)器IP
FTP_IP=192.168.70.20
#FTP服務(wù)器偵聽端口(命令端口)
FTP_PORT=48888
#文件上傳到FTP服務(wù)器的哪個目錄
FTP_PATH=files
#本地對當前目錄
LOCAL_PATH=`pwd`
#傳入?yún)?shù)校驗
if [ $# != 1 ]; then
echo "param count error..please input file"
exit 1
fi
echo "begin ftp $1 ..."
#關(guān)閉交互提示、禁止自動登錄
ftp -v -i -n<#與指定IP和端口的FTP服務(wù)器建立連接
open ${FTP_IP} ${FTP_PORT}
#驗證FTP用戶和密碼
user ${FTP_USER} ${FTP_PAWD}
#以二進制模式傳輸文件
binary
#服務(wù)器目錄切換到指定目錄
cd ${FTP_PATH}
#切換本地目錄
lcd ${LOCAL_PATH}
#上傳文件 $1 表示執(zhí)行腳本時傳入的文件名
put $1
#斷開連接,退出FTP客戶端
bye
!
腳本中有詳細的注釋,就不再做額外的功能說明了,此腳本只提供了一個基礎(chǔ)的一鍵上傳的模版,而且一次只能上傳一個文件,大家可以根據(jù)自身的需求去擴充或者調(diào)整