很久没用,怎么通过ftp下载文件都不会了。。虽然有点傻,,还是记录一下吧!
一、简单模拟linux下从ftp下载文件的过程
1.1、linux下直接使用 ftp 命令跟上IP连接FTP服务器,根据提示输入ftp账号和密码
[zcy@imzcy ~]$ ftp 192.168.109.134
Connected to 192.168.109.134 (192.168.109.134).
220-FileZilla Server 0.9.60 beta
220-written by Tim Kosse (tim.kosse@filezilla-project.org)
220 Please visit https://filezilla-project.org/
Name (192.168.109.134:zcy): zcy
331 Password required for zcy
Password:
230 Logged on
Remote system type is UNIX.
ftp>
1
2
3
4
5
6
7
8
9
10
11
[zcy@imzcy~]$ftp192.168.109.134
Connectedto192.168.109.134(192.168.109.134).
220-FileZillaServer0.9.60beta
220-writtenbyTimKosse(tim.kosse@filezilla-project.org)
220Pleasevisithttps://filezilla-project.org/
Name(192.168.109.134:zcy):zcy
331Passwordrequiredforzcy
Password:
230Loggedon
RemotesystemtypeisUNIX.
ftp>
1.2、使用 ls 命令列出ftp根目录所有文件
ftp> ls
227 Entering Passive Mode (192,168,109,134,213,1)
150 Opening data channel for directory listing of "/"
-rw-r--r-- 1 ftp ftp 120 Oct 20 13:45 test_201810201023.txt
-rw-r--r-- 1 ftp ftp 69 Oct 20 13:45 test_201810201024.txt
-rw-r--r-- 1 ftp ftp 69 Oct 20 13:45 test_201810201025.txt
-rw-r--r-- 1 ftp ftp 92 Oct 20 13:45 test_201810201026.txt
226 Successfully transferred "/"
ftp>
1
2
3
4
5
6
7
8
9
ftp>ls
227EnteringPassiveMode(192,168,109,134,213,1)
150Openingdatachannelfordirectorylistingof"/"
-rw-r--r--1ftpftp120Oct2013:45test_201810201023.txt
-rw-r--r--1ftpftp69Oct2013:45test_201810201024.txt
-rw-r--r--1ftpftp69Oct2013:45test_201810201025.txt
-rw-r--r--1ftpftp92Oct2013:45test_201810201026.txt
226Successfullytransferred"/"
ftp>
1.3、使用 get 命令从ftp下载单个文件到本地服务器用户登录ftp之前所在目录
ftp> get test_201810201023.txt
local: test_201810201023.txt remote: test_201810201023.txt
227 Entering Passive Mode (192,168,109,134,235,119)
150 Opening data channel for file download from server of "/test_201810201023.txt"
226 Successfully transferred "/test_201810201023.txt"
120 bytes received in 0.00432 secs (27.76 Kbytes/sec)
ftp>
1
2
3
4
5
6
7
ftp>gettest_201810201023.txt
local:test_201810201023.txtremote:test_201810201023.txt
227EnteringPassiveMode(192,168,109,134,235,119)
150Openingdatachannelforfiledownloadfromserverof"/test_201810201023.txt"
226Successfullytransferred"/test_201810201023.txt"
120bytesreceivedin0.00432secs(27.76Kbytes/sec)
ftp>
1.4、使用 mget 命令从ftp批量下载多个文件到本地
使用 mget 命令批量下载多个文件到本地或者使用 mput 批量上传多个文件到ftp服务器时,一定要先使用 prompt off 命令关闭交互模式。不然每上传或下载一个文件,就会提示你确认一次!
1.4.1 、ftp默认启用交互模式,批量下载文件时,每下载一个文件之前都提示一下。直接回车或者输入y确认下载,Ctrl + C 或者输入n取消下载当前提示的文件。如下所示:
ftp> mget test_2018102010*
mget test_201810201023.txt? n
mget test_201810201024.txt? ^C
Continue with mget? y
mget test_201810201025.txt? y
227 Entering Passive Mode (192,168,109,134,200,2)
150 Opening data channel for file download from server of "/test_201810201025.txt"
226 Successfully transferred "/test_201810201025.txt"
69 bytes received in 0.00214 secs (32.23 Kbytes/sec)
mget test_201810201026.txt?
227 Entering Passive Mode (192,168,109,134,202,225)
150 Opening data channel for file download from server of "/test_201810201026.txt"
226 Successfully transferred "/test_201810201026.txt"
92 bytes received in 0.00468 secs (19.67 Kbytes/sec)
ftp>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ftp>mgettest_2018102010*
mgettest_201810201023.txt?n
mgettest_201810201024.txt?^C
Continuewithmget?y
mgettest_201810201025.txt?y
227EnteringPassiveMode(192,168,109,134,200,2)
150Openingdatachannelforfiledownloadfromserverof"/test_201810201025.txt"
226Successfullytransferred"/test_201810201025.txt"
69bytesreceivedin0.00214secs(32.23Kbytes/sec)
mgettest_201810201026.txt?
227EnteringPassiveMode(192,168,109,134,202,225)
150Openingdatachannelforfiledownloadfromserverof"/test_201810201026.txt"
226Successfullytransferred"/test_201810201026.txt"
92bytesreceivedin0.00468secs(19.67Kbytes/sec)
ftp>
1.4.2、使用 prompt off 命令关闭交互模式:
ftp> prompt off
Interactive mode off.
ftp>
1
2
3
ftp>promptoff
Interactivemodeoff.
ftp>
1.4.3、重新使用 mget 命令下载多个文件,就不会提示了。
ftp> mget test_2018102010*
local: test_201810201023.txt remote: test_201810201023.txt
227 Entering Passive Mode (192,168,109,134,244,102)
150 Opening data channel for file download from server of "/test_201810201023.txt"
226 Successfully transferred "/test_201810201023.txt"
120 bytes received in 0.00109 secs (110.50 Kbytes/sec)
local: test_201810201024.txt remote: test_201810201024.txt
227 Entering Passive Mode (192,168,109,134,226,123)
150 Opening data channel for file download from server of "/test_201810201024.txt"
226 Successfully transferred "/test_201810201024.txt"
69 bytes received in 0.00103 secs (66.73 Kbytes/sec)
ftp>
1
2
3
4
5
6
7
8
9
10
11
12
ftp>mgettest_2018102010*
local:test_201810201023.txtremote:test_201810201023.txt
227EnteringPassiveMode(192,168,109,134,244,102)
150Openingdatachannelforfiledownloadfromserverof"/test_201810201023.txt"
226Successfullytransferred"/test_201810201023.txt"
120bytesreceivedin0.00109secs(110.50Kbytes/sec)
local:test_201810201024.txtremote:test_201810201024.txt
227EnteringPassiveMode(192,168,109,134,226,123)
150Openingdatachannelforfiledownloadfromserverof"/test_201810201024.txt"
226Successfullytransferred"/test_201810201024.txt"
69bytesreceivedin0.00103secs(66.73Kbytes/sec)
ftp>
1.5、使用 exit 或 bye 命令退出ftp
ftp> exit
221 Goodbye
[zcy@imzcy ~]$
ftp> bye
221 Goodbye
[zcy@imzcy ~]$
1
2
3
4
5
6
7
ftp>exit
221Goodbye
[zcy@imzcy~]$
ftp>bye
221Goodbye
[zcy@imzcy~]$
二、ftp常用命令说明
2.1、查看ftp使用帮组
2.1.1、 在linux下使用 ftp -help 命令查看使用帮助
[zcy@imzcy ~]$ ftp -help
Usage: { ftp | pftp } [-Apinegvtd] [hostname]
-A: 启用活动模式
-p: 启用被动模式(默认为FTP和PFTP)
-i: 在mget中关闭提示(相当于登录后执行prompt off命令的效果)
-n: 禁止自动登录(进入ftp的CLI界面,之后可以使用user命令指定账号密码登录)
-e: 禁用RealLoad支持,如果存在
-g: 禁用文件名球
-m: 不要强迫数据通道接口与控制通道相同
-v: 冗长模式
-t: 启用包跟踪[非功能性]
-d: 启用调试
1
2
3
4
5
6
7
8
9
10
11
12
13
[zcy@imzcy~]$ftp-help
Usage:{ftp|pftp}[-Apinegvtd][hostname]
-A:启用活动模式
-p:启用被动模式(默认为FTP和PFTP)
-i:在mget中关闭提示(相当于登录后执行promptoff命令的效果)
-n:禁止自动登录(进入ftp的CLI界面,之后可以使用user命令指定账号密码登录)
-e:禁用RealLoad支持,如果存在
-g:禁用文件名球
-m:不要强迫数据通道接口与控制通道相同
-v:冗长模式
-t:启用包跟踪[非功能性]
-d:启用调试
2.1.2、使用 help 命令或者 ? 查看ftp支持的命令
ftp> ?
Commands may be abbreviated. Commands are:
! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cdup image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send
ftp>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ftp>?
Commandsmaybeabbreviated.Commandsare:
!debugmdirsendportsite
$dirmgetputsize
accountdisconnectmkdirpwdstatus
appendexitmlsquitstruct
asciiformmodequotesystem
bellgetmodtimerecvsunique
binaryglobmputregettenex
byehashnewerrstatustick
casehelpnmaprhelptrace
cdidlenlistrenametype
cdupimagentransresetuser
chmodlcdopenrestartumask
closelspromptrmdirverbose
crmacdefpassiverunique?
deletemdeleteproxysend
ftp>
2.2、使用 ! 可以交互式的执行本地服务器的一些命令
# 2.2.1、显示本地服务器当前位置
ftp> !pwd
/root
ftp>
# 2.2.2、显示本地服务器当前路径下有哪些数据
ftp> !ls -l
总用量 4
-rw-r--r-- 1 root root 115 10月 11 10:18 ftp.sh
drwxr-xr-x 2 root root 6 10月 11 10:17 test
ftp>
# 但是不能使用 !cd 切换本地服务器路径
ftp> !cd /root/test
ftp>
ftp> !pwd
/root
ftp>
2.2.3、切换本地服务器所在路径只能使用 lcd 命令
ftp> lcd /root/test/
Local directory now /root/test
ftp> !pwd
/root/test
ftp>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 2.2.1、显示本地服务器当前位置
ftp>!pwd
/root
ftp>
# 2.2.2、显示本地服务器当前路径下有哪些数据
ftp>!ls-l
总用量4
-rw-r--r--1rootroot11510月1110:18ftp.sh
drwxr-xr-x2rootroot610月1110:17test
ftp>
# 但是不能使用 !cd 切换本地服务器路径
ftp>!cd/root/test
ftp>
ftp>!pwd
/root
ftp>
2.2.3、切换本地服务器所在路径只能使用lcd命令
ftp>lcd/root/test/
Localdirectorynow/root/test
ftp>!pwd
/root/test
ftp>
三、linux下使用shell脚本自动从ftp下载文件
3.1、脚本如下所示:
[zcy@imzcy ~]$ cat ftp.sh
#!/bin/bash
ftp -ni 192.168.109.134 <
user zcy zcy123
mget test_2018102010*
bye
ZCY
[zcy@imzcy ~]$
1
2
3
4
5
6
7
8
[zcy@imzcy~]$catftp.sh
#!/bin/bash
ftp-ni192.168.109.134<
userzcyzcy123
mgettest_2018102010*
bye
ZCY
[zcy@imzcy~]$
3.2、执行效果如下所示:
[zcy@imzcy ~]$ ls
ftp.sh
[zcy@imzcy ~]$ sh ftp.sh
[zcy@imzcy ~]$ ls
ftp.sh test_201810201023.txt test_201810201024.txt test_201810201025.txt test_201810201026.txt
[zcy@imzcy ~]$
1
2
3
4
5
6
[zcy@imzcy~]$ls
ftp.sh
[zcy@imzcy~]$shftp.sh
[zcy@imzcy~]$ls
ftp.shtest_201810201023.txttest_201810201024.txttest_201810201025.txttest_201810201026.txt
[zcy@imzcy~]$