http://metacpan.org/pod/Net::SFTP::Foreign
my ( $user, $password, $host ) = @_;
my ( $source, $dest ) = '/whatever';
my $sftp = Net::SFTP::Foreign->new(
user => $user,
host => $host,
password => $password,
more => [ -o => 'StrictHostKeyChecking no' ]
);
$sftp->rput(
$source, $dest,
overwrite => 1,
on_error =>
sub { print $sftp->error; }
);
Если $ dest существует на $ host, всегда срабатывает on_error rput, а ошибка $ sftp-> равна «Удаленный каталог» / что бы там ни было »
Несмотря на ошибку, rput продолжает и рекурсивно копирует каталог, но на хосте Taget он будет скопирован в / что угодно, вместо в / что угодно.то есть я получаю /whwhat/whwhat.
Это обходной путь, если сделать его до rput, но на самом деле я не хочу удалять каталог назначения:
$sftp->rremove( $dest );
У кого-нибудь есть идеи, что я делаю не так?Хотелось бы, чтобы мне лучше было перебрать все файлы, которые я хочу передать, а затем сделать foreach $ file (@glob_result) {$ sftp-> put (yada, yada)} ;?Это кажется неэффективным и подверженным ошибкам.