/ / Jak mogę sprawdzić rozmiar pliku przez FTP za pomocą Perla? - perl, ftp

Jak mogę sprawdzić rozmiar pliku przez FTP używając Perla? - perl, ftp

Mam skrypt FTP Perl i chcę się upewnićczy transfer plików jest zakończony, sprawdzając liczbę bajtów przesyłanych do zdalnego serwera jest równa rzeczywistym bajtom pliku na serwerze lokalnym. Jak mogłem to osiągnąć?

Oto, co mam do tej pory:

 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;

Odpowiedzi:

6 dla odpowiedzi № 1

z dokumentów możesz użyć rozmiaru ()

rozmiar (PLIK)  Zwraca rozmiar w bajtach dladany plik przechowywany na zdalnym serwerze.  UWAGA: Podany rozmiar to rozmiar przechowywanego pliku na pilocie serwer. Jeśli plik zostanie następnie przesłany z serwera w ASCII tryb i zdalny serwer i lokalna maszyna mają różne pomysły „Koniec linii”, a następnie rozmiar pliku na lokalnym komputerze po przeniesieniu może być inny.

Kod:

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 dla odpowiedzi № 2
print "FTP size = ", $ftp->size($file), "n";
print "Local size = ", (-s $file), "n";