use Net::FTP;
use Time::Local;
use File::stat;
my $data;
my $ora;
my $ftp;
my $Source = "192.168.1.1";
my $User = "myuser";
my $Password = "mypasswd";
my $DirOrigine = "dir";
my $DirDestinazione = "C:\\My\\Dest";
my $PatternOrig = "*.*";
my @elenco;
my $Elemento;
my $ritenta;
my $File;
my $FileData;
my $FileSize;
my $modifica;
my $status;
$data = `date /T`;
$ora = `time /T`;
chomp($data);
chomp($ora);
$ftp = Net::FTP->new($Source);
$ftp->login($User,$Password);
$ftp->binary();
$ftp->cwd($DirOrigine);
@elenco = $ftp->ls("$PatternOrig");
$ftp->quit;
print "Inizio FTP Download. $data $ora\n";
print "@elenco\n";
foreach $Elemento (@elenco)
{
$ritenta = 1;
while($ritenta <= 3)
{
# print "$Elemento\t\t";
# ($Data,$Size,$File) = $Elemento =~ /(.*M)\s*?(\d*) (\w{0,8}\.\w{0,3}$)/;
$File = $Elemento;
next if ($File eq "");
# print "-$File- -$Data-\n";
$ftp = Net::FTP->new($Source);
if (!defined($ftp))
{
print "Errore FTP: $@\n";
die("");
}
$ftp->login($User,$Password);
$ftp->binary();
$ftp->cwd($DirOrigine);
$FileData = $ftp->mdtm("$File");
$FileSize = $ftp->size("$File");
# ($mese,$giorno,$anno,$ora,$min,$AMPM) = $Data =~ /^(\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d)(\w\w)$/;
# $ora += 12 if ($AMPM eq 'PM');
# $ora = 0 if $ora == 24;
# $anno += 2000 if $anno < 70;
# $mese--;
# if ($mese < 0 or $mese > 11)
# {
# print "$Elemento\n-$File- -$Data-\n";
# print "$giorno,$mese,$anno,$ora,$min\t\t$Data\n";
# }
# $modifica = timelocal(0,$min,$ora,$giorno,$mese,$anno);
# print "$giorno,$mese,$anno,$ora,$min\t\t$modifica\n";
$modifica = $FileData;
#print "$modifica - $Size\n";
if (-e "$DirDestinazione\\$File")
{
# print "Il file esiste... ";
$status = stat("$DirDestinazione\\$File");
if ($modifica == $status->mtime and $FileSize == $status->size)
{
# printf "Il file e' uguale: size %s modificato il %s\n",$status->size,$status->mtime;
$ritenta = 4;
next;
}
}
print "Scarico $File ";
# $modifica = $ftp->mdtm($File);
# $size = $ftp->size($File);
# print "Modificato il $modifica Dimensione $size\n";
if ($ftp->get("$File","$DirDestinazione\\$File"))
{
print "OK\n";
$ritenta = 4;
}
else
{
print STDERR "$File Scarico NON OK --> $^E\n";
print "\n";
$ritenta++;
}
utime $modifica,$modifica,"$DirDestinazione\\$File";
$ftp->quit;
}
}
$data = `date /T`;
$ora = `time /T`;
chomp($data);
chomp($ora);
print "Fine FTP Download. $data $ora\n";