Linux文件传输FTP详解
ftp命令用来设置文件系统相关功能。ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些使用Linux进行ftp操作将会非常容易。
语法
ftp(选项)(参数)
选项
-d:详细显示指令执行过程,便于排错或分析程序执行的情况; -i:关闭互动模式,不询问任何问题; -g:关闭本地主机文件名称支持特殊字符的扩充特性; -n:不使用自动登录; -v:显示指令执行过程。
参数
主机:指定要连接的FTP服务器的主机名或ip地址。
实例
FTP>ascii: 设定以ASCII方式传送文件(缺省值) FTP>bell: 每完成一次文件传送,报警提示. FTP>binary: 设定以二进制方式传送文件. FTP>bye: 终止主机FTP进程,并退出FTP管理方式. FTP>case: 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母. FTP>cd: 同UNIX的CD命令. FTP>cdup: 返回上一级目录. FTP>chmod: 改变远端主机的文件权限. FTP>close: 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除. FTP>delete: 删除远端主机中的文件. FTP>dir [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件. FTP>get [remote-file] [local-file] 从远端主机中传送至本地主机中. FTP>help [command] 输出命令的解释. FTP>lcd: 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录. FTP>ls [remote-directory] [local-file] 同DIR. FTP>macdef: 定义宏命令. FTP>mdelete [remote-files] 删除一批文件. FTP>mget [remote-files] 从远端主机接收一批文件至本地主机. FTP>mkdir directory-name 在远端主机中建立目录. FTP>mput local-files 将本地主机中一批文件传送至远端主机. FTP>open host [port] 重新建立一个新的连接. FTP>prompt: 交互提示模式. FTP>put local-file [remote-file] 将本地一个文件传送至远端主机中. FTP>pwd: 列出当前远端主机目录. FTP>quit: 同BYE. FTP>recv remote-file [local-file] 同GET. FTP>rename [from] [to] 改变远端主机中的文件名. FTP>rmdir directory-name 删除远端主机中的目录. FTP>send local-file [remote-file] 同PUT. FTP>status: 显示当前FTP的状态. FTP>system: 显示远端主机系统类型. FTP>user user-name [password] [account] 重新以别的用户名登录远端主机. FTP>? [command]: 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。 FTP>! 从 ftp 子系统退出到外壳。
详解:
格式:ftp [hostname| ip-address]
a)在linux命令行下输入:
b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。
2. 下载文件
下载文件通常用get和mget这两条命令。
a) get
格式:get [remote-file] [local-file]
将文件从远端主机中传送至本地主机中。
如要获取远程服务器上/usr/your/1.htm,则
b) mget
格式:mget [remote-files]
从远端主机接收一批文件至本地主机。
如要获取服务器上/usr/your/下的所有文件,则
ftp> mget *.* (回车)
此时每下载一个文件,都会有提示。如果要除掉提示,则在mget *.* 命令前先执行:prompt off
注意:文件都下载到了linux主机的当前目录下。比如,在 /usr/my下运行的ftp命令,则文件都下载到了/usr/my下。
3.上传文件
a) put
格式:put local-file [remote-file]
将本地一个文件传送至远端主机中。
如要把本地的1.htm传送到远端主机/usr/your,并改名为2.htm
b) mput
格式:mput local-files
将本地主机中一批文件传送至远端主机。
如要把本地当前目录下所有html文件上传到服务器/usr/your/ 下
ftp> mput *.htm (回车)
注意:上传文件都来自于主机的当前目录下。比如,在 /usr/my下运行的ftp命令,则只有在/usr/my下的文件linux才会上传到服务器/usr/your 下。
4. 断开连接
bye:中断与服务器的连接。
命令介绍:
1.FTP> ! 从 ftp子系统退出到外壳。
2.FTP> ? 显示 ftp命令说明。? 与 help相同。
格式:? [command]
说明:[command]指定需要帮助的命令名称。如果没有指定 command,ftp将显示全部命令的列表。
3.FTP> append 使用当前文件类型设置将本地文件附加到远程计算机上的文件。
格式:append local-file [remote-file]
说明:local-file 指定要添加的本地文件。
remote-file 指定要添加 local-file的远程计算机上的文件。如果省略了 remote-file,本地文件名将被用作远程文件名。
4.FTP> ascii 将文件传送类型设置为默认的 ASCII。
说明:FTP 支持两种文件传送类型,ASCII码和二进制图像。在传送文本文件时应该使用ASCII。
5.FTP> bell 切换响铃以在每个文件传送命令完成后响铃。默认情况下,铃声是关闭的。
6.FTP> binary(或bi)将文件传送类型设置为二进制。
7.FTP> bye(或by)结束与远程计算机的 FTP会话并退出 ftp。
8.FTP> cd 更改远程计算机上的工作目录。
格式:cd remote-directory
说明:remote-directory 指定要更改的远程计算机上的目录。
9.FTP> close 结束与远程服务器的 FTP会话并返回命令解释程序。
FTP> debug 切换调试。当调试打开时,发送到远程计算机的每个命令都打印,前面是字符串“>”。默认情况下,调试是关闭的。
10.FTP> delete 删除远程计算机上的文件。
格式:delete remote-file
说明:remote-file 指定要删除的文件。
11.FTP> dir 显示远程目录文件和子目录列表。
格式:dir [remote-directory] [local-file]
说明:remote-directory 指定要查看其列表的目录。如果没有指定目录,将使用远程计算机中的当前工作目录。Local-file指定要存储列表的本地文件。如果没有指定,输出将显示在屏幕上。
12.FTP> disconnect从远程计算机断开,保留 ftp 提示。
13.FTP> get 使用当前文件转换类型将远程文件复制到本地计算机。
格式:get remote-file [local-file]
说明:remote-file 指定要复制的远程文件。
Local-file 指定要在本地计算机上使用的名称。如果没有指定,文件将命名为 remote-file。
14.FTP >glob 切换文件名组合。组合允许在内部文件或路径名中使用通配符(*和?)。默认情况下,组合是打开的。
15.FTP >hash切换已传输的每个数据块的数字签名 (#) 打印。数据块的大小是2048字节。默认情况下,散列符号打印是关闭的。
16.FTP >help显示 ftp 命令说明。
格式:help [command]
说明:command 指定需要有关说明的命令的名称。如果没有指定 command,ftp将显示全部命令的列表。
17.FTP >lcd 更改本地计算机上的工作目录。默认情况下,工作目录是启动 ftp的目录。
格式:lcd [directory]
说明:directory 指定要更改的本地计算机上的目录。如果没有指定directory,将显示本地计算机中当前的工作目录。
18.FTP >literal 将参数逐字发送到远程 FTP服务器。将返回单个的 FTP 回复代码。
格式:literal argument [ ...]
说明:argument 指定要发送到 FTP服务器的参数。
19.FTP >ls 显示远程目录文件和子目录的缩写列表。
格式:ls [remote-directory] [local-file]
说明:remote-directory 指定要查看其列表的目录。如果没有指定目录,将使用远程计算机中的当前工作目录。 local-file指定要存储列表的本地文件。如果没有指定,输出将显示在屏幕上。
20.FTP >mdelete 删除远程计算机上的文件。
格式:mdelete remote-files [ ...]
说明:remote-files 指定要删除的远程文件。
21.FTP >mdir显示远程目录文件和子目录列表。可以使用 mdir 指定多个文件。
格式:mdir remote-files [ ...] local-file
说明:remote-files 指定要查看列表的目录。必须指定 remote-files。请键入 -使用远程计算机上的当前工作目录。
local-file 指定要还原列表的本地文件。请键入-在屏幕上显示列表。
22.FTP >mget 使用当前文件传送类型将远程文件复制到本地计算机。
格式:mget remote-files [ ...]
说明:remote-files 指定要复制到本地计算机的远程文件。
23.FTP >mkdir 创建远程目录。
格式:mkdir directory
说明:directory 指定新的远程目录的名称。
24.FTP >mls 显示远程目录文件和子目录的缩写列表。
格式:mls remote-files [ ...] local-file
说明:remote-files 指定要查看列表的文件。必须指定 remote-files;
请键入- 使用远程计算机上的当前工作目录。
local-file 指定要存储列表的本地文件。请键入 -以在屏幕上显示列表。
25.FTP >mput 使用当前文件传送类型将本地文件复制到远程计算机上。
格式:mput local-files [ ...]
说明:local-files 指定要复制到远程计算机的本地文件
26.FTP >open 与指定的 FTP服务器连接。
格式:open computer [port]
说明:computer 指定要连接的远程计算机。可以通过 IP地址或计算机名称指定计算机(DNS 或主机文件必须可用)。如果自动登录打开(默认),ftp还将尝试自动将用户登录到 FTP 服务器port指定用来联系 FTP 服务器的端口号。
27.FTP >prompt 切换提示。如果关闭提示时 mget及 mput 传送所有文件,Ftp在多文件传送过程中将提示允许您有选择地检索或存储文件。默认情况下,提示是
打开的。
28.FTP >put 使用当前文件传送类型将本地文件复制到远程计算机上。
格式:put local-file [remote-file]
说明:local-file 指定要复制的本地文件。
remote-file 指定要在远程计算机上使用的名称。如果没有指定,文件将命名为 local-file。
29.FTP >pwd 显示远程计算机上的当前目录。
30.FTP >quit 结束与远程计算机的 FTP 会话并退出 ftp。
31.FTP >quote 将参数逐字发送到远程 FTP服务器。将返回单个的 FTP 回复代码。
Quote 与 literal相同。
格式:quote argument [ ...]
说明:argument 指定要发送到 FTP服务器的参数。
32.FTP >recv使用当前文件传送类型将远程文件复制到本地计算机。Recv 与 get相同。
格式:recv remote-file [local-file]
说明:remote-file 指定要复制的远程文件。
local-file 指定要在本地计算机上使用的名称。如果没有指定,文件将命名为 remote-file。
33.FTP >remotehelp显示远程命令帮助。
格式:remotehelp [command]
说明:command 指定需要帮助的命令的名称。如果没有指定 command,ftp将显示全部远程命令的列表。
34.FTP >rename重命名远程文件。
格式:rename filename newfilename
说明:filename 指定要重命名的文件。 newfilename指定新的文件名。
35.FTP >rmdir 删除远程目录。
格式:rmdir directory
说明:directory 指定要删除的远程目录的名称。
36.FTP >send 使用当前文件传送类型将本地文件复制到远程计算机上。Send与put 相同。
格式:send local-file [remote-file]
说明:local-file 指定要复制的本地文件。 remote-file指定要在远程计算机上使用的名称。如果没有指定,文件将命名为 local-file。
37.FTP >status 显示 FTP 连接和切换的当前状态。
38.FTP >trace 切换数据包跟踪。Trace在运行 ftp 命令时显示每个数据包的路由。
39.FTP >type 设置或显示文件传送类型。
格式:type [type-name]
说明:type-name 指定文件传送类型。默认设置为 ascii。如果没有指定type-name,将显示当前的类型。
40.FTP >user 指定远程计算机的用户。
格式:user username [password] [account]
说明:user-name 指定登录到远程计算机所使用的用户名。password指定 user-name 的密码。如果没有指定,但必须指定,ftp会提示输入密码。
account 指定登录到远程计算机所使用的帐户。如果没有指定account,但是需要指定,ftp会提示您输入帐户。
41.FTP >verbose 切换 verbose模式。如果打开,将显示所有 ftp 响应。在文件传送完成后,将同时显示与传送效率有关的统计信息。默认情况下,verbose是打开的。
附录:ftp命令表
FTP采用客户端/服务器模型,客户端和服务器使用TCP建立连接。在服务器端,FTP有两个预分配的的端口号,分别为20和21.其中,端口20用于发送和接受FTP数据(ASCII码或二进制文件),该数据端口只在传输数据是打开,并在传输结束时关闭。端口21用于发送和接受FTP的控制信息,FTP服务器通过侦听这个端口来判断是否有ftp客户端的连接请求,FTP会话建立后,端口21的连接在会话期间始终保持打开状态。
在客户端,当发出请求时动态分配端口号,选择范围为1024~65535.当一个FTP会话开始后,客户端程序打开一个控制端口(如1038),该端连接到服务器上的21端口,接受和发送控制信命令;需要传输数据时,客户端再打开第二个端口(如1039),连接到服务器上的20端口。每当开始传输文件时,客户端程序会打开一个新的数据端口,在文件传输完毕后,再自动释放该端口。
该命令的语法格式如下所示:
ftp [-v] [-d] [–i] [-n] [-g] [-k realm] [-x] [-u] [host]
ftp命令主要选项说明 选项 说明 -d 启动调试模式 -u 关闭自动认证 -e 不记录历史指令 -i 关闭交互模式 -x 在成功认证之后,协商密钥 -n 关闭自动登录功能 -p 传输文件模式为被动模式 -v 程序运行时,显示详细的处理信息 -k realm 使用Kerberos v4认证时,从realm中得到信息 host FTP服务器的主机名/IP地址
在客户端访问FTP时,如果没有在命令行给出服务器的主机名或IP,则客户端将出现“ftp>”提示符,等待用户输入ftp内部命令
常见ftp内部命令及其说明
内部命令 说明
ls 显示服务器上的目录
get 从服务器下载指定文件到客户端
put 从客户端传送指定文件到服务器
open 连接ftp服务器
quit 断开连接并退出ftp服务器
cd directory 改变服务器的当前目录为directory
lcd directory 改变本地的当前目录为directory
bye 退出ftp命令状态
ascii 设置文件传输方式为ASCII模式
binary 设置文件传输方式为二进制模式
! 执行本地主机命令
cd 切换远端ftp服务器上的目录
cdup 上一层目录
close 在不结束ftp进程的情况下,关闭与ftp服务器的连接
delete 删除远端ftp服务器上的文件
get 下载
hash 显示#表示下载进度
mdelete 删除文件,模糊匹配
mget 下载文件,模糊匹配
mput 上传文件,模糊匹配
mkdir 在远端ftp服务器上,建立文件夹
newer 下载时,检测是不是新文件
prompt 关闭交互模式
put 上传
pwd 显示当前目录
ftp使用的内部命令如下(中括号表示可选项):
1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip. 2.$ macro-ame[args]:执行宏定义macro-name. 3.account[password]:提供登录远程系统成功后访问系统资源所需的补充口令。 4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。 5.ascii:使用ascii类型传输方式。 6.bell:每个命令执行完毕后计算机响铃一次。 7.bin:使用二进制文件传输方式。 8.bye:退出ftp会话过程。 9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。 10.cd remote-dir:进入远程主机目录。 11.cdup:进入远程主机目录的父目录。 12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out。 13.close:中断与远程服务器的ftp会话(与open对应)。 14.cr:使用asscii方式传输文件时,将回车换行转换为回行。 15.delete remote-file:删除远程主机文件。 16.debug[debug-value]:设置调试方式,显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。 17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件local-file。 18.disconnection:同close。 19.form format:将文件传输方式设置为format,缺省为file方式。 20.get remote-file[local-file]:将远程主机的文件remote-file传至本地硬盘的local-file。 21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。 22.hash:每传输1024字节,显示一个hash符号(#)。 23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。 24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。 25.image:设置二进制传输方式(同binary)。 26.lcd[dir]:将本地工作目录切换至dir。 27.ls[remote-dir][local-file]:显示远程目录remote-dir,并存入本地文件local-file。 28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。 29.mdelete[remote-file]:删除远程主机文件。 30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如:mdir *.o.*.zipoutfile 31.mget remote-files:传输多个远程文件。 32.mkdir dir-name:在远程主机中建一目录。 33.mls remote-file local-file:同nlist,但可指定多个文件名。 34.mode[modename]:将文件传输方式设置为modename,缺省为stream方式。 35.modtime file-name:显示远程主机文件的最后修改时间。 36.mput local-file:将多个文件传输至远程主机。 37.newer file-name:如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。 38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。 39.nmap[inpattern outpattern]:设置文件名映射机制,使得文件传输时,文件中的某些字符相互转换,如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX机的情况。 40.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans 1R,则文件名LLL将变为RRR。 41.open host[port]:建立指定ftp服务器连接,可指定连接端口。 42.passive:进入被动传输方式。 43.prompt:设置多个文件传输时的交互提示。 44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令,该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。 45.put local-file[remote-file]:将本地文件local-file传送至远程主机。 46.pwd:显示远程主机的当前工作目录。 47.quit:同bye,退出ftp会话。 48.quote arg1,arg2…:将参数逐字发至远程ftp服务器,如:quote syst. 49.recv remote-file[local-file]:同get。 50.reget remote-file[local-file]:类似于get,但若local-file存在,则从上次传输中断处续传。 51.rhelp[cmd-name]:请求获得远程主机的帮助。 52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态,否则显示文件状态。 53.rename[from][to]:更改远程主机文件名。 54.reset:清除回答队列。 55.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。 56.rmdir dir-name:删除远程主机目录。 57.runique:设置文件名唯一性存储,若文件存在,则在原文件后加后缀..1,.2等。 58.send local-file[remote-file]:同put。 59.sendport:设置PORT命令的使用。 60.site arg1,arg2…:将参数作为SITE命令逐字发送至远程ftp主机。 61.size file-name:显示远程主机文件大小,如:site idle 7200。 62.status:显示当前ftp状态。 63.struct[struct-name]:将文件传输结构设置为struct-name,缺省时使用stream结构。 64.sunique:将远程主机文件名存储设置为唯一(与runique对应)。 65.system:显示远程主机的操作系统类型。 66.tenex:将文件传输类型设置为TENEX机的所需的类型。 67.tick:设置传输时的字节计数器。 68.trace:设置包跟踪。 69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:type binary,设置二进制传输方式。 70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask 3。 71.user user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous my@email。 72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp服务器的所有响应都将显示给用户,缺省为on. 73.?[cmd]:同help。
附表:
ascii |
为文本文件设置传输方式为ascii |
bell |
命令完成时响铃 |
binary |
设置传输方式为二进制,这是缺省设置 |
bye |
终止ftp会话,并退出 |
cd dir_name |
切换远程主机上目录 |
cdup |
切换远程主机上目录至上一级目录 |
close |
终止到远程主机的ftp会话 |
delete file_name |
删除远程主机中的文件 |
dir |
显示远程主机上目录列表 |
get file_name |
下载一个文件 |
hash |
每传输一定数量数据打印`#' |
lcd dir_name |
切换本地工作目录 |
ls |
列表远程主机目录中的信息 |
mdelete file_names |
删除多个文件 |
mget file_names |
下载多个文件 |
mkdir dir_name |
在远程主机上创建目录 |
mput file_names |
上传多个文件 |
open site_name |
连接到远程tftp |
prompt |
设置多个文件传输时的交互提示 |
put file_name |
上传一个文件 |
pwd |
显示远程主机当前工作目录 |
quit |
终止ftp会话并退出 |
rename old_name new_name |
重命名文件 |
rmdir dir_name |
删除远程主机上的某个目录 |
size file_name |
显示远程主机上某个文件的大小 |
status |
显示当前状态 |
system |
显示远程主机操作系统类型 |
tenex |
将文件传输类型设置为tenex机所需的类型 |
user |
向远程主机发送用户信息(登录信息) |
verbose |
开关verbose方式,远程主机所有响应都显示给客户 |