简介
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/ftpte 上传到服务器的 /files 目录的步骤
- 步骤说明
1、输入帐号密码,登录FTP服务器 2、'!pwd' 命令表示本地机器当前目录 3、'!ls' 命令表示列出本地当前目录中的文件 4、'pwd' 命令是当前处于FTP服务器的哪个目录,这个目录是相对于用户锁定目录而言的,关于锁定目录请参考上一篇文章 'cd files' 命令是服务器当前目录( '/' ) 切换到 '/files' 目录 'ls' 是列出FTP服务器当前目录中的文件,从结果可以看出,服务器当前目录中没有任何文件 5、'binary' 以二进制模式上传,一般在上传之前设置下即可 6、'put ; 把本地当前目录中的 '; 上传到服务器的 '/files' 目录中,上传成功之后,会有 'Transfer complete' 的提示 如果把本地其他目录的文件上传到服务器的话,需要指定上传到服务器的文件名, 比如:本地存在 /root/ftptest/te 文件 可以使用 'put ./te ; 命令将它上传到服务器的 '/files' 目录 7、上传完成之后,执行 'nlist *' 命令查看下服务器当前目录中的文件列表,此处是用来确认是否上传成功,从结果可以看出,服务器当前目录的文件列表中有 '; 文件,所以此次上传成功 8、操作完成之后,执行 'bye' 命令断开连接并退出FTP客户端
批量上传
批量上传主要使用 mput 命令,后面可以接文件名列表,也可以接含有通配符的文件名,命令能正确获取通配符指代的文件,文件名之间以空格隔开
下面是将 /root/ftptest 目录下的 、、、 文件上传到服务器的 /files 目录的步骤
上图省略了FTP登录输入帐号密码的步骤,其中第一条执行的命令是 ftp -i -v 192.168.70.20 48888
选项 -i 表示关闭交互提示,在批量上传的时候很有用, mput 批量上传的时候,会逐个文件调用 put上传命令进行上传, 如果没有关闭交互提示,每次上传文件的时候都需要人为输入 y 字符确认,当关闭了交互提示后,就能不间断的上传,直到所有的文件上传成功
- 步骤说明
1、本地当前所处目录 2、服务器当前所处目录,然后进入 '/files' 目录 3、以二进制模式上传 4、批量上传文件,'mput' 是批量上传的命令,后面可以接 文件名或者通配符组成的文件名,它们之间用空格隔开,这里的意思是批量上传 '、、、 ' 执行 'mput *.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 !
脚本中有详细的注释,就不再做额外的说明了,此脚本只提供了一个基础的一键上传的模版,而且一次只能上传一个文件,大家可以根据自身的需求去扩充或者调整