【发布时间】:2015-01-22 13:20:51
【问题描述】:
我在 SFTP 位置创建了一个目录,我想将文件从一个 SFTP 目录移动到另一个目录,但那里不支持 cp 命令。
我怎样才能做到这一点?
【问题讨论】:
标签: sftp
我在 SFTP 位置创建了一个目录,我想将文件从一个 SFTP 目录移动到另一个目录,但那里不支持 cp 命令。
我怎样才能做到这一点?
【问题讨论】:
标签: sftp
核心 SFTP 协议不支持复制远程文件。
有copy-file extension to the protocol 的草稿。但只有少数 SFTP 服务器(例如ProFTPD/mod_sftp 和 Bitvise SFTP 服务器)和少数 SFTP 客户端(例如WinSCP)支持。
最广泛使用的 OpenSSH SFTP 服务器绝对不支持它。也不是通过 OpenSSH SFTP 客户端 (sftp),即没有 cp 命令或任何其他功能等效的命令。未来版本的服务器will support related copy-data 和客户端将支持cp 命令。
替代方案:
cp command。copy-file 扩展,请使用也支持它的 SFTP 客户端。(我是 WinSCP 的作者)
【讨论】:
您可以在命令行模式下使用 WinSCP 克隆远程目录 (winscp /console)。假设您在远程 SFTP 服务器上有以下结构:
theDestinationDirectory/
|-file1.txt
|-file2.txt
您可以使用以下脚本(在 WinSCP 控制台中)复制此远程目录:
open sftp://myUsername:myPassword@myftp.mydomain.com
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 服务器都支持...(至少我的支持)
【讨论】:
cp(使用WinSCP command call)。因此,实际上您的解决方案与 SFTP(或 FTP)无关 - 在我的回答中,“如果您可以通过 SSH/终端访问服务器,请使用 shell cp 命令。”