2016-05-10 14 views
0

Das folgende Skript funktioniert erfolgreich.Versuchen Sie, den gesamten Inhalt des Verzeichnisses von einem Server zum anderen zu erhalten, indem Sie ssh2_scp_recv in php verwenden

Erste-Datei von einem Server auf einen anderen

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

Aber anstatt für nur eine statische Datei zu holen, möchte ich Ordner in mit all seinen Inhalt holen.

Mit obigen Beispiel das Verzeichnis I zu lokalen Server holen möchte, ist "15721022890870"

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

Ich habe unten Code versucht, aber nicht funktioniert,

Der Remote-Server-Verzeichnis hat, aber der lokale Server nicht, so will ich Verzeichnis machen, dann kopieren Sie alle ihren Inhalt in

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"; 
    } 
+0

'ssh2_scp_recv' unterstützt nicht mehrere Dateikopien. Sie könnten mit 'ssh2_exec' und/oder' ssh2_tunnel' erfolgreich sein, aber nur eine unbewiesene Idee. Was ist deine Umgebung? Haben Sie über 'exec' keinen Zugriff auf das System? Im Allgemeinen, warum benutzt du PHP? –

+0

Der gesamte Server basiert auf Ubuntu, Linux. Ja, ich habe ein Vollzugriffssystem über exec. Der Grund, warum ich PHP dort verwende, ist das Post-Script, bevor ich den Inhalt abrufe. – sanainfotech

+0

Also warum rufst du 'scp' nicht über exec an? Wenn Schlüsselpaar verwendet wird, ist keine Interaktion erforderlich. –

Antwort

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

Dies ist von Server zu Computer, aber Sie können das $ localDir ändern