2012-03-02 9 views
1

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; } 
); 

が存在する場合rputは(一種の)失敗し、rputのON_ERROR常に火災や$ sftp->エラーは「リモートでありますすでにエラーにもかかわらず、」

が存在するディレクトリ「/何」、rputは上運び、再帰的にコピーディレクトリを、しかしtagetホスト上ではなくオーバー/何で、の下で/何をコピーされますよ。すなわち、私は/何でも/何でも終わります。私が間違ってやっている

$sftp->rremove($dest); 

誰もが任意のアイデアを持っている:

rput前に行う場合、これはcrumbyの回避策として機能しますが、私は実際には先のディレクトリを削除したくありませんか?私は転送したいファイルのすべてをグロブしてから、foreach $ファイル(@glob_result){$ sftp-> put(yada、yada)};それは非効率的でエラーが起こりやすいようです。

答えて

0

このエラーは予期せず、無視してください。

ファイルが/whatever/whateverに転送されている場合は、少なくともNet :: SFTP :: Foreignのdevelopment versionで問題を再現できません。

$Net::SFTP::Foreign::debug = 2|4|64|4096|8192|32768を設定するとどうなりますか?

+0

うーん、あなたは正しい。私は単純なテストプログラムのために/何を/何でも再現することはできません。私はその行動を観察したときに私が何をしたのか分かりません。 –

+1

これで、on_errorサブがそのメッセージをチェックし、無視します。他のエラーは私のプログラムを止めるでしょう。お返事をありがとうございます! –

-1

ソースは./*と宛先./です。

my ($source, $dest) = ('/whatever/*','/whatever/'); 

この動作が期待されます。

+0

'rput'はワイルドカードを受け入れません。 – salva

関連する問題