很久没用,怎么通过ftp下载文件都不会了。。虽然有点傻,,还是记录一下吧!
一、简单模拟linux下从ftp下载文件的过程
1.1、linux下直接使用 ftp
命令跟上IP连接FTP服务器,根据提示输入ftp账号和密码
1 2 3 4 5 6 7 8 9 10 11 |
[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、使用 ls
命令列出ftp根目录所有文件
1 2 3 4 5 6 7 8 9 |
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.3、使用 get
命令从ftp下载单个文件到本地服务器用户登录ftp之前所在目录
1 2 3 4 5 6 7 |
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.4、使用 mget
命令从ftp批量下载多个文件到本地
使用 mget 命令批量下载多个文件到本地或者使用 mput 批量上传多个文件到ftp服务器时,一定要先使用 prompt off 命令关闭交互模式。不然每上传或下载一个文件,就会提示你确认一次!
1.4.1 、ftp默认启用交互模式,批量下载文件时,每下载一个文件之前都提示一下。直接回车或者输入y确认下载,Ctrl + C 或者输入n取消下载当前提示的文件。如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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.4.2、使用 prompt off
命令关闭交互模式:
1 2 3 |
ftp> prompt off Interactive mode off. ftp> |
1.4.3、重新使用 mget
命令下载多个文件,就不会提示了。
1 2 3 4 5 6 7 8 9 10 11 12 |
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.5、使用 exit
或 bye
命令退出ftp
1 2 3 4 5 6 7 |
ftp> exit 221 Goodbye [zcy@imzcy ~]$ ftp> bye 221 Goodbye [zcy@imzcy ~]$ |
二、ftp常用命令说明
2.1、查看ftp使用帮组
2.1.1、 在linux下使用 ftp -help
命令查看使用帮助
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中关闭提示(相当于登录后执行prompt off命令的效果) -n: 禁止自动登录(进入ftp的CLI界面,之后可以使用user命令指定账号密码登录) -e: 禁用RealLoad支持,如果存在 -g: 禁用文件名球 -m: 不要强迫数据通道接口与控制通道相同 -v: 冗长模式 -t: 启用包跟踪[非功能性] -d: 启用调试 |
2.1.2、使用 help
命令或者 ?
查看ftp支持的命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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> |
2.2、使用 !
可以交互式的执行本地服务器的一些命令
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-- 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> |
三、linux下使用shell脚本自动从ftp下载文件
3.1、脚本如下所示:
1 2 3 4 5 6 7 8 |
[zcy@imzcy ~]$ cat ftp.sh #!/bin/bash ftp -ni 192.168.109.134 <<ZCY user zcy zcy123 mget test_2018102010* bye ZCY [zcy@imzcy ~]$ |
3.2、执行效果如下所示:
1 2 3 4 5 6 |
[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 ~]$ |