/ / Come posso controllare la dimensione di un file su FTP usando Perl? - perl, ftp

Come posso controllare la dimensione di un file tramite FTP usando Perl? - perl, ftp

Ho uno script FTP Perl e voglio esserne sicurose il trasferimento di file è completo controllando il numero di byte che vengono trasferiti sul server remoto è uguale ai byte effettivi del file nel server locale. Come potrei farlo?

Ecco cosa ho finora:

 my $ftp = Net::FTP->new($host, Debug => 1)
or die "Could not connect to "$host": $@";

$ftp->login($user, $pw)
or die sprintf "Could not login: %s", $ftp->message;

$ftp->cwd($path)
or die sprintf "Could not login: %s", $ftp->message;

$ftp->ls;

$ftp->binary;

$ftp->get($file)
or die sprintf "Could not login: %s", $ftp->message;

risposte:

6 per risposta № 1

dai documenti, puoi usare size ()

dimensione (FILE)  Restituisce la dimensione in byte perfile fornito come archiviato sul server remoto.  NOTA: la dimensione indicata è la dimensione del file memorizzato sul telecomando server. Se il file viene successivamente trasferito dal server in ASCII modalità e il server remoto e la macchina locale hanno idee diverse su "Fine linea" quindi la dimensione del file sul computer locale dopo il trasferimento potrebbe essere diverso.

Codice:

my $host="127.0.0.1";
my $user="anonymous";
my $pw = "asdfsf";
my $path="pub";
my $file="file";
my $ftp = Net::FTP->new($host, Debug => 0)
or die "Could not connect to "$host": $@";

$ftp->login($user, $pw) or die sprintf "Could not login: %s", $ftp->message;
$ftp->cwd($path) or die sprintf "Could not login: %s", $ftp->message;
$ftp->binary;
print $ftp->size($file) or die sprintf "Could not login: %s", $ftp->message;
$ftp->quit();

3 per risposta № 2
print "FTP size = ", $ftp->size($file), "n";
print "Local size = ", (-s $file), "n";