Как скачать папку / каталог с FTP-сервера, используя perl? - PullRequest
1 голос
/ 23 ноября 2011

У меня есть массив папок на FTP-сервере. Например,

@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?

Ответы [ 2 ]

5 голосов
/ 23 ноября 2011

Прежде всего, запустите все ваши 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;
4 голосов
/ 24 ноября 2011

Просто используйте 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...