尝试使用php中的ssh2_scp_recv将目录的所有内容从一个服务器获取到另一个服务器

时间:2016-05-10 08:42:18

标签: php ssh2-exec ssh2-sftp

以下脚本正常运行。

将文件从一台服务器获取到另一台服务器

if(ssh2_scp_recv($conn, '/var/www/html/captures/store/2016/04/HK/15721022890870/test/vcredist.bmp', 
    '/var/www/html/captures/store/2016/04/HK/15721022890870/test/vcredist.bmp')){
echo "\n recevied \n";
  }else{
 echo "\n not recevied\n";
  }

但是我只想获取一个包含所有内容的文件夹。

通过上面的例子,我想要获取到本地服务器的目录是“15721022890870”

/var/www/html/captures/store/2016/04/HK/15721022890870/

我尝试过以下代码,但不起作用,

远程服务器有目录,但本地服务器没有,所以我想创建目录然后复制其内容

if(ssh2_scp_recv($conn, '/var/www/html/captures/store/2016/04/HK/15721022890870/', 
    '/var/www/html/captures/store/2016/04/HK/')){
echo "\n recevied done \n";
  }else{
  echo "\n not done \n";
   }

1 个答案:

答案 0 :(得分:0)

<?php
$username = "your_username";
$password = "your_pass";
$url      = 'your_stp_server_url';
// Make our connection
$connection = ssh2_connect($url);

// Authenticate
if (!ssh2_auth_password($connection, $username, $password)) throw new Exception('Unable to connect.');

// Create our SFTP resource
if (!$sftp = ssh2_sftp($connection)) throw new Exception('Unable to create SFTP connection.');
$localDir  = '/path/to/your/local/dir';
$remoteDir = '/path/to/your/remote/dir';
// download all the files
$files    = scandir('ssh2.sftp://' . $sftp . $remoteDir);
if (!empty($files)) {
  foreach ($files as $file) {
    if ($file != '.' && $file != '..') {
      ssh2_scp_recv($connection, "$remoteDir/$file", "$localDir/$file");
    }
  }
}
?>

这是从服务器到计算机,但您可以修改$ localDir