2016-04-05 24 views
0

私はphpseclibを自分で発見しました。これを私のコードのために使いたいと思います。何とか私はどのように私は1つのsftpディレクトリから他のsftpディレクトリにファイルをコピーすることができます見つけることができません。あなたがこれで私を助けることができれば素晴らしいだろう。phpseclibでリモートファイルをコピーまたは移動するにはどうしたらいいですか?

例:

コピーのすべてのファイル

/JN/XML/

/JN/XML /バックアップ/

答えて

0

はこれを試してみてください。

+0

これはローカルディレクトリを作成し、リモートのsftp内のすべてのファイルを、作成されたthyeディレクトリのローカルマシンにダウンロードします。ヤンノイマンが求めたものではありません。 –

+1

@LawrenceGandhar - タイプミスがあったようです。私はディレクトリを作成しましたが、新しく作成したディレクトリには書き込んでいませんでした。コードを更新しました。しかし、明白なタイプミスの場合には実際に編集して修正するのではなく、自由にダウンボートしてください! – neubert

+0

差異:http://stackoverflow.com/posts/36558913/revisions – neubert

-2
$dir = "/jn/xml/"; 
$files = $sftp->nlist($dir, true); 
foreach($files as $file) 
{ 
    if ($file == '.' || $file == '..') continue; 
    $sftp->put($dir."backup".'/'.$file, $sftp->get($dir.'/'.$file); 
} 

このコードは、 "/ jn/xml /"ディレクトリの内容を "/ jn/xml/backup"にコピーします。

0

これは尋ねられたことを行うべきだと思います。

私はphpseclibをインポートするためにcomposerを使用しました。これは私がテストしたコードではありませんが、他の回答からは構文が正しいはずです。

<?php 
include('Net/SFTP.php'); 
// connection 
$sftp = new Net_SFTP('website.com'); 
if (!$sftp->login('user', 'pass')) { 
    exit('bad login'); 
} 
// Use sftp to make an mv 
$sftp->exec('mv /jn/xml/* /jn/xml/backup/'); 

注:

  • ディレクトリのいずれかが存在しない場合、これは失敗します。 errormsgを取得するにはecho $sftp->exec(...を実行してください。
  • /jn/xml/backup /が/ jn/xml /の中にあるため警告が表示されますので、ファイルを/jn/xml.bak/に移動することをお勧めします。
  • 「Net/SSH2」クラスあなたはmvだけを行い、ファイルを転送しないからです。実際、execはSSH2クラスの関数であり、SFTPはSSH2から継承します。
関連する問題