我在FTP serever中有一系列文件夹。例如,
@ftp_dirs=('/Tarun/Netdomais','/Tarun/Testing','/Tarun/Tested_files')
我需要将数组中的每个文件夹从FTP服务器下载到本地文件夹(c:\ ftp_downloaded)。
我写了以下几行
use strict;
use Net::FTP;
my $ftp=Net::FTP->new("hostname",Debug=>0);
$ftp->login("user_name","password");
$ftp->cwd("/Tarun");
my @ftp_dirs=('/Tarun/Netdomais','/Tarun/Testing','/Tarun/Tested_files');
my $local='c:\ftp_downloaded';
foreach my $ftp_folder(@ftp_dirs){
$ftp->get($ftp_folder,$local);
}
以上代码无效。因为get方法仅适用于从ftp而不是文件夹下载文件。
是否可以从ftp下载文件夹?
答案 0 :(得分:5)
首先,使用以下命令启动所有perl脚本:
use strict;
use warnings;
其次,你错过了一行;
:
my @ftp_dirs=('/Tarun/Netdomais','/Tarun/Testing','/Tarun/Tested_files')
第三,我认为您可以尝试使用command
中Net::FTP
继承的Net::Cmd
方法并发出ftp mget
命令,或模拟mget
用类似的东西:
$ftp->get($_) for grep { 1 } $ftp->ls;
答案 1 :(得分:4)
只需使用Net::FTP::Recursive。
示例:
use Net::FTP::Recursive;
$ftp = Net::FTP::Recursive->new("some.host.name", Debug => 0);
$ftp->login("anonymous",'me@here.there');
$ftp->cwd('/pub');
$ftp->rget( ParseSub => \&yoursub );
$ftp->quit;