我刚刚为自己发现了phpseclib,并希望将它用于我的代码。不知何故,我无法找到如何将文件从一个sftp目录复制到另一个sftp目录。如果你能帮我解决这个问题会很棒。
e.g:
复制
的所有文件/ JN / XML /
到
/ JN / XML /备份/
答案 0 :(得分:1)
$dir = "/jn/xml/";
$files = $sftp->nlist($dir, true);
foreach($files as $file)
{
if ($file == '.' || $file == '..') continue;
$sftp->put($dir."backup".'/'.$file, $sftp->get($dir.'/'.$file);
}
此代码将内容从“/ jn / xml /”目录复制到“/ jn / xml / backup”。
答案 1 :(得分:1)
要能够使用PHPSeclib正确移动文件,可以使用
data_list
答案 2 :(得分:0)
试试这个:
<?php
include('Net/SFTP.php');
$sftp = new Net_SFTP('website.com');
if (!$sftp->login('user', 'pass')) {
exit('bad login');
}
$sftp->chdir('/jn/xml/');
$files = $sftp->nlist('.', true);
foreach ($files as $file) {
if ($file == '.' || $file == '..') {
continue;
}
$dir = '/jn/xml/backup/' . dirname($file);
if (!file_exists($dir)) {
mkdir($dir, 0777, true);
}
file_put_contents($dir . '/' . $file, $sftp->get($file));
}
答案 3 :(得分:0)
我认为这应该做的事情。
我使用composer导入phpseclib所以这不是我测试的代码,但从其他答案来看,语法应该是正确的。
<?php
include('Net/SFTP.php');
// connection
$sftp = new Net_SFTP('website.com');
if (!$sftp->login('user', 'pass')) {
exit('bad login');
}
// Use sftp to make an mv
$sftp->exec('mv /jn/xml/* /jn/xml/backup/');
注意:
echo $sftp->exec(...
以获取errormsg。