我已在 SFTP 位置中创建了一个目录,并且想要将文件从一个 SFTP 目录移动到另一个目录,但那里不支持
cp
命令。
我怎样才能实现这个目标?
核心SFTP协议不支持复制远程文件。
copy-file
协议扩展草案。但只有少数 SFTP 服务器(例如 ProFTPD mod_sftp
和 Bitvise SFTP 服务器)和少数 SFTP 客户端(例如 WinSCP)支持这一点。
最广泛使用的 SFTP 服务器,OpenSSH 仅在最近的
版本 9.0中支持相关的
copy-data
。它的 sftp
客户端现在有 cp
/copy
命令。
替代方案:
cp
命令。copy-file
扩展,请使用也支持它的 SFTP 客户端。(我是WinSCP的作者)
您可以在命令行模式下使用 WinSCP 克隆远程目录 (
winscp /console
)。假设您在远程 SFTP 服务器上有以下结构:
theDestinationDirectory/
|-file1.txt
|-file2.txt
您可以使用以下脚本复制此远程目录(在 WinSCP 控制台中):
open sftp://myUsername:[email protected]
mkdir theDestinationDirectory
call cp theSourceDirectory/* theDestinationDirectory/ -r
然后您可以检查您的副本是否已正确完成(在 WinSCP 控制台中):
ls theDestinationDirectory
drwxr-sr-x 2 uid12345 gid12345 37 Jul 29 23:50:24 2016 .
drwxr-sr-x 6 uid12345 gid12345 75 Jul 29 23:50:11 2016 ..
-rw-r--r-- 1 uid12345 gid12345 29670 Jul 29 23:50:24 2016 file1.txt
-rw-r--r-- 1 uid12345 gid12345 12432 Jul 29 23:50:24 2016 file2.txt
请注意,正如 Martin Prikryl 所写,这可能并非所有 SFTP 服务器都支持......(至少我的支持)