如何使用phpseclib将文件夹服务器复制到服务器?

问题描述 投票:0回答:1

我想使用库phpseclib从服务器到服务器创建备份数据。这是最近的脚本:

<?php
include "lib/Crypt/RSA.php";
include "lib/Crypt/Base.php";
include "lib/Crypt/RC4.php";
include "lib/Crypt/AES.php";
include "lib/Net/SFTP.php";
include "lib/Math/BigInteger.php";

set_include_path('lib/'); 

$sftp = new Net_SFTP('172.1.xxx.xx');
if (!$sftp->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 (!file_exists($dir)) {
        //mkdir($dir, 0777, true);
    }
    file_put_contents($dir . '/' . $file, $sftp->get($file));
}

但仍然是错误 - > PHP警告:file_put_contents()

复制所有文件和文件夹

服务器1

服务器2

php backup sftp phpseclib
1个回答
0
投票

建立你的脚本:

<?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对象。但这似乎不是你所要求的。

© www.soinside.com 2019 - 2024. All rights reserved.