Нужно узнать сколько в сумме занимают файлы на ftp, начиная с текущей директории.
Знаю, что юзать нужно Net::FTP::Recursive, но что-то мозг плохо работает в этом направлении.
[Perl] FTP + рекурсия. Узнать суммарный размер
Модератор: Модераторы разделов
-
Кто-то
- Сообщения: 100
[Perl] FTP + рекурсия. Узнать суммарный размер
Laptop, Work and Home Desktop - Ubuntu
Work servers and Home router - OpenBSD
Zaurus - Cacko 1.23Full
Work servers and Home router - OpenBSD
Zaurus - Cacko 1.23Full
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: [Perl] FTP + рекурсия. Узнать суммарный размер
Без гарантий, что правильно(скрипт вообще для другого использовался):
Код: Выделить всё
#!/usr/bin/perl -w
use Net::FTP;
my $hostname = '';
my $login = "";
my $passwd = "";
$ftp=ftp_login($hostname,$login,$passwd);
$size=0;
$s=ftp_get_tree(".");
#print \%{$s{'public_html'}};
print $size,"\n";
#ftp_login($hostname,$login,$password);
sub ftp_login {
my ($hostname,$login,$password) = @_;
my $ftp = Net::FTP->new(Host=>$hostname) or die "Cannot connect to the server $hostname: $@";
$ftp ->login($login,$password) or die "Cannot login to server $hostname, with $login, $password: $@ ";
print "FTP $login login to $hostname whith $password OK \n";
return $ftp;
}
sub ftp_get_tree {
my $path = shift;
my %tree_hash;
my @dir_content;
@dir_content = grep {!/\.{1,2}$/} $ftp->dir($path);
foreach $in (@dir_content){
@s = split " ",$in;
#print "$s[4] $path/$s[8]\n";
if ($s[0] =~ "^d.*"){
$tree_hash{$s[8]} = ftp_get_tree("$path/$s[8]");
# $size+=$s[4];
}else{
$tree_hash{$s[8]} = -1;
$size+=$s[4];
}
}
return \%tree_hash;
}