perl语言精于网络处理,Net::FTP模块支持所有的FTP功能。最近使用该模块进行远端服务器的镜像拷贝,小小的总结了一下。
Net::FTP是IO::Socket和Net::Cmd的后代,作为IO::Socket的后代,它可以用作文件句柄直接和服务器进行通信。作为Net::Cmd的后代,他可以使用code(),message()和ok()几个方法。
1:new:$ftp = Net::FTP->new($host,[,%options])
new()创建一个Net::FTP对象。第一个参数是必须的,是希望连接的FTP服务器域名或者ip。options为可选参数。支持的可选参数如下:
Firewall:当机器处于防火墙之后时,该选项配置FTP代理服务器。具体值,可以参考Net::Config模块中ftp_firewall的说明
FirewallType:FTP代理类型。具体值,可以参考Net::Config模块中ftp_firewall_type的说明
BlockSize:传输的块大小,默认为10240
Port:连接的FTP端口,默认使用21
Timeout:超时时间,单位s。默认120s。
Debug:设置调试模式。非零值。
Passive:为所有文件传输使用FTP被动模式。
Hash:每传输1024字节数据向STRERR打印一个散列标记
LocalAddr:本机地址
2:login ([LOGIN [,PASSWORD [, ACCOUNT] ] ])
$success = $ftp->login($username, $passwd) or die "Can not login:",$ftp->message;
login()使用提供的用户名和密码登录服务器,如果没有提供参数,首先在用户的.netrc文件中查找认证信息,如果没有找到使用默认用户名:anonymous 密码:anonymous@ 。
可选的ACCOUNT参数用于一些特殊的FTP服务器,它们在登录到服务器本身之后需要一个附加的认证密码来获得对文件系统的访问。
登录成功,返回true,否则返回false。
3:$ftp->ascii()
设置传输模式为ascii
4:$ftp->binary()
设置传输模式为binary
5:$ftp->rename(OLDNAME,NEWNAME)
重命名服务器上的文件
6:$ftp->delete(FILENAME)
删除服务器上的文件,条件是登录用户存在相应的权限。成功返回true,失败返回false。
7:$ftp->cwd([DIR])
在远程主机上尝试将当前工作目录改为指定的路径。如果没有指定参数,更改为用户的根目录。
8:$ftp->cdup()
更改服务器上当前目录至上一级目录。类似于“cd ../”
9:$ftp->pwd()
返回当前工作目录信息。
10:$ftp->rmdir($dir)
删除指定目录。前提是有权限。成功返回true,失败返回false。
11:$ftp->mkdir($dir [,$RECURSE])
创建指定的目录,如果RECURSE值为true,则创建全部的目录。类似于"mkdir -r"。成功返回创建的目录、
12:@items = $ftp->ls([$dir])
获取指定目录或者当前目录(默认)所有文件和子目录的段格式目录列表。
标量上下文环境中,返回对数组的引用
列表上下文环境中,返回列表数组。列表的每个成员都只由文件名或目录名组成。
13:@items = $ftp->dir([$dir])
获取指定目录或者当前目录(默认)所有文件和子目录的长格式目录列表。
与ls()相比,返回列表的每个成员都是一行目录列表,提供了文件模式、所有者以及长度。
14:$modtime = $ftp->mdtm($file)
返回指定文件的修改时间。表示从纪元开始的描述,和stat()函数返回的格式相同。如果文件不存在或这不是普通文件返回undef。
15:$size = $ftp->size($file)
以字节为单位返回指定文件的长度。错误返回undef。
16:$success = $ftp->get($remote_filename [,$local_filename [,$offset]])
从服务器获取名为$remote_filename文件。
$local_filename 可以选择指定本机文件名
$offset 可以选择从指定位置传输文件。适用于断点续传。offset的值一般采用stat()函数获取当前文件的长度,然后用于续传。
17:$success = $ftp->put($local_filename [,$remote_filename])
传输文件至FTP服务器上。
18:$ftp->quit()
退出连接
Net::FTP模块还提供其它的功能,具体可以使用perldoc Net::FTP进行查看,只列出了一些常用到的选项。具体代码偶就不贴了,如有兴趣可以索取。