/ / Як я можу перевірити розмір файлу через FTP за допомогою Perl? - perl, ftp

Як перевірити розмір файлу через FTP за допомогою Perl? - perl, ftp

У мене є сценарій FTP Perl, і я хочу переконатисячи завершено передачу файлу шляхом перевірки кількості байтів, які передаються на віддалений сервер, рівним фактичним байтам файлу на локальному сервері. Як я міг це досягти?

Ось що я маю до цих пір:

 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;

Відповіді:

6 за відповідь № 1

з документів ви можете використовувати розмір ()

розмір (FILE)  Повертає розмір у байтах длязаданий файл як збережений на віддаленому сервері.  ПРИМІТКА. Розмір повідомленого розміру - це розмір збереженого файлу на пульті сервер. Якщо файл згодом передається з сервера в ASCII режим та віддалений сервер та локальна машина мають різні уявлення про "End Of Line", то розмір файлу на локальній машині після передачі можуть бути різними.

Код:

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 для відповіді № 2
print "FTP size = ", $ftp->size($file), "n";
print "Local size = ", (-s $file), "n";