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

Rename folder to two destination folders on SFTP server with PHP

此功能正在运行,并将文件夹从主文件夹移动到一个名为 destinationfolder1 的文件夹。我也想将文件夹移动到另一个文件夹。名为 backup 的文件夹,与 destinationfolder1 在同一 place/level 中的内容。这可能吗?

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

您不能将一个 file/folder“重命名”为两个文件夹。那是胡说八道。您必须创建 file/folder.

的副本

核心 SFTP 协议中没有“复制”功能。有 copy-file SFTP 扩展。但是 PHP SSH2 函数不支持它。您也许可以将扩展添加到开源 phpseclib library. But actually very few SFTP servers do support the extension. In the most widespread OpenSSH SFTP server it is supported only by very recent version 9.0.

如果您可以 shell 访问服务器,作为解决方法,您可以使用 ssh2_exec:

执行 cp shell 命令
ssh2_exec($connection, 'cp -r /source/path/file /backup/file');

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


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