前言
FTP基本操作
安裝FTP工具
brew install telnet
brew install inetutils
brew link --overwrite inetutils
使用FTP
登錄
#方式一
$ ftp
ftp> open server-ip
#方式二
$ ftp server-ip
以上命令之后,按提示輸入用戶名和密碼。
當出現以下日志,表示連接成功
Connected to server-ip
220 (vsFTPd 2.2.2)
Name (10.0.0.101:username): username
331 Please specify the password.
Password:
230 Login successful.
此時已經進入ftp命令行環境,此時如果進行本地目錄或文件操作命令將發生一些變化,如下:
服務器操作 | 本地目錄操作 |
---|---|
cd 目錄名(進入服務器目錄) | lcd 目錄名(進入本機目錄) |
cd (退到服務器根目錄) | lcd (退到本機根目錄) |
cd ..(退回到上一級目錄) | lcd ..(退回到上一級目錄) |
pwd | !pwd |
ls | !ls |
上傳文件
#server-filename 必須顯式指明,否則報錯:文件名無效
ftp> put /local/path/filename /remote/path/server-filename
注意:向ftp服務器上傳文件有兩種模式
字符模式(ASCII)和二進制模式(Binary)。默認是ASCII模式。一般上傳非文本文件要用二進制模式。
登錄ftp后,上傳文件前,在ftp>狀態下輸入bin即可(切換為二進制模式)。 在ftp>狀態下輸入asc(切換為ASCII模式)
批量上傳
使用通匹符批量上傳文件至服務器,需要注意的一點,mput 不支持絕對路徑,應該先進入要上傳的本地文件夾及遠程文件夾才可以操作。
ftp> cd /remote/path
ftp> lcd /local/path
ftp> mput file*
local: file.jar remote: imgs.jar
229 Entering Extended Passive Mode (|||62331|)
150 Opening data channel for file upload to server of "/local/path/imgs.jar"
100% |*| 519 2.60 MiB/s --:-- ETA
226 Successfully transferred "/local/path/imgs.jar"
519 bytes sent in 00:00 (19.54 KiB/s)
注意:ftp不支持文件夾上傳
文件下載
下載服務器中的文件至本地目錄中,可選指定下載至本地目錄后的文件名稱,依然要求提前進入待下載文件的目錄中。
ftp> get remote-filename local-filename
默認本地當前路徑,local-filename可省略
注意:關於下載文件夾, FTP 命令不支持文件夾下載操作
刪除文件
ftp> delete /remote/path/filename
在服務器中刪除文件,可以指定絕對路徑,相對其他命令顯得比較靈活
Shell腳本操作FTP
批量下載腳本代碼
#!/bin/sh
ftp -v -n 10.11.10.11 [端口用空格分開,默認端口可以不填]<<EOF
user ftpuser ftppwd
binary
cd Down
lcd ./
prompt
mget *
bye
EOF
echo "download from ftp successfully"
下載單個文件腳本代碼
#!/bin/sh
ftp -v -n 10.11.10.11 [端口用空格分開,默認端口可以不填]<<EOF
user ftpuser ftppwd
quote pasv
passive
binary
cd Down
lcd ./
prompt
#get down.txt
get down.txt note.txt
bye
EOF
echo "download from ftp successfully"
批量上傳腳本代碼
#從本地向FTP批量上傳文檔
#!/bin/sh
ftp -v -n 10.11.10.11 [端口用空格分開,默認端口可以不填]<<EOF
user ftpuser ftppwd
quote pasv
passive
binary
hash
cd Up
lcd ./
prompt
mput *
bye
#here document
EOF
echo "commit to ftp successfully"
上傳單個文件腳本代碼
#從本地向FTP上傳單個文檔
#!/bin/sh
ftp -v -n 10.11.10.11 [端口用空格分開,默認端口可以不填]<<EOF
user ftpuser ftppwd
quote pasv
passive
binary
cd Up
lcd ./
prompt
put file.txt
bye
#here document
EOF
echo "commit to ftp successfully"