Как я могу проверить размер файла через FTP с помощью Perl? - PullRequest
1 голос
/ 18 ноября 2009

У меня есть сценарий 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;

Ответы [ 2 ]

6 голосов
/ 18 ноября 2009

из документов, вы можете использовать размер ()

size ( FILE )

Returns the size in bytes for the given file as stored on the remote server.

NOTE: The size reported is the size of the stored file on the remote 
server. If the file is subsequently transferred from the server in ASCII
mode and the remote server and local machine have different ideas about
"End Of Line" then the size of file on the local machine after transfer
may be different.

Код:

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 голосов
/ 18 ноября 2009
print "FTP size = ", $ftp->size($file), "\n";
print "Local size = ", (-s $file), "\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...