Построение вашего скрипта:
<?php
set_include_path('lib/');
include "lib/Net/SFTP.php";
$sftp = new Net_SFTP('172.1.xxx.xx'); // source server
if (!$sftp->login('root', 'xxxx')) {
exit('login failed');
}
$sftp2 = new Net_SFTP('172.1.xxx.xx'); // destination server
if (!$sftp2->login('root', 'xxxx')) {
exit('login failed');
}
$sftp->chdir('/opt/oss/server/var/fileint/fm');
$files = $sftp->nlist('.', true);
foreach ($files as $file) {
if ($file == '.' || $file == '..') {
continue;
}
$dir = './Alarm/' . dirname($file);
if (!$sftp2->file_exists($dir)) {
$sftp2->mkdir($dir, 0777, true);
}
$sftp2->put($dir . '/' . basename($file), $sftp->get($file));
}
Это скопирует каталог с одного удаленного сервера на другой удаленный сервер. Обратите внимание, что если вы хотите скопировать каталог с удаленного сервера в другой каталог на том же сервере, я бы просто использовал объект $sftp
вместо создания нового объекта $sftp2
. Но это не кажется 1009 *, как будто это то, что вы спрашиваете.