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