使用PHP将文件夹重命名为SFTP服务器上的两个目标文件夹

时间:2017-06-16 07:12:26

标签: php sftp

此功能正在运行,并将文件夹从主文件夹移动到一个名为destinationfolder1的文件夹。我想将文件夹也移动到另一个文件夹。名为backup的文件夹,与destinationfolder1位于同一位置/级别的文件夹。这可能吗?

ssh2_sftp_rename($sftp, 'mainfolder/' . $entry  , 'destinationfolder1/' . $entry );

1 个答案:

答案 0 :(得分:0)

您无法将文件/文件夹“重命名”为两个文件夹。那是胡说八道。您必须创建文件/文件夹的副本。

核心SFTP协议中没有“复制”功能。这有copy-file SFTP扩展。但PHP SSH2功能不支持它。您可以将扩展名添加到开源phpseclib library。但实际上很少有SFTP服务器支持扩展。特别是最广泛使用的SFTP服务器OpenSSH不支持它。所以这可能不值得尝试。

如果您具有对服务器的shell访问权限,则可以使用ssh2_exec执行cp shell命令作为解决方法:

ssh2_exec($connection, 'cp -r /source/path/file /backup/file');

如果您没有shell访问权限,则唯一的选择是下载文件/文件夹并将其重新上传到其他文件夹。

另见In an SFTP session is it possible to copy one remote file to another location on same remote SFTP server?