2016-05-10 44 views
0

以下腳本正在成功運行。試圖在php中使用ssh2_scp_recv將所有目錄的內容從一臺服務器獲取到另一臺服務器

從一臺服務器獲取文件到另一個

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

'ssh2_scp_recv'不支持多個文件副本。你可能會用'ssh2_exec'和/或'ssh2_tunnel'獲得成功,但這只是一個未被證實的想法。你的環境是什麼?你沒有通過'exec'訪問系統嗎?一般來說,你爲什麼使用PHP? –

+0

所有服務器都基於Ubuntu,Linux。是的,我通過exec擁有完整的訪問系統。我在使用PHP的原因是在獲取內容之前有後處理腳本 – sanainfotech

+0

那麼爲什麼不通過exec調用'scp'呢?使用密鑰對時,不需要交互。 –

回答

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"); 
    } 
    } 
} 
?> 
所有內容210

這是從服務器到計算機,但您可以修改$ localDir

相關問題