Answers:
sftp
像cp
和一样scp
,要求您在复制文件夹(显然是文件夹及其内容)时,必须明确告知要使用该-r
选项递归传输文件夹。
因此,添加-r
到命令。
-r
到sftp
命令。 sftp -r user@host
Couldn't canonicalise: No such file or directory
。
# sftp user@remote-host
#> get -r remote-folder
我只能建议您使用rsync
。通过安全连接移动文件时,这在某种程度上是行业标准。
rsync -alPvz ./source_dir server.com:destination_dir
到目前为止,这是我多年来一直在使用的。
(该-a
选项负责目录递归操作)
-a
=递归+保留符号链接,权限,修改时间,所有者,组,特殊文件和设备文件(后者需要超级用户特权);-l
=保持符号链接(已包含在中-a
);-P
=显示传输过程中的进度+保留部分传输的文件;-v
=详细模式(但是,-P
为了避免出现奇怪的(错误?)protocol version mismatch
错误,它似乎是强制性的);-z
=启用压缩传输的数据。
-l
必须使用此开关似乎与版本有关。我记得较早的版本未包含-l
在中-a
。
您也许还可以使用use scp
。通用格式为
scp -rp sourceDirName username@server:destDirName
scp
表示“安全副本”。标志是
-r
递归到子目录-p
保留修改时间我相信其余项目都是不言自明的
这有点矛盾,但对我有用的是:
ssh
登录到远程机器sftp
从远程计算机到本地机器get
带有该-r
选项的命令来移动目录及其所有文件。sftp> get -r data /opt/bin get: Invalid flag -r
如果您的问题实际上是“如何使用sftp传输目录”,那么
sftp -r user@server
但是,如果您转移目录,我可能会根据您的需求建议两个更好的选择。 sftp
需要在类似ssh的命令提示符下登录到远程服务器,但是如果只需要文件,则可以使用更简便快捷的方法。
Scp
对于一次传输,要上传,请尝试:
# upload source directory to remote server
scp -rp source_dir user@server:dest
#download directory from remote server:
scp -rp user@server:source_dir dest
#specifying ssh key:
scp -rp -i ~/.ssh/key user@server:source_dir dest
#remote directory has spaces
scp -rp -i ~/.ssh/key user@server:"source\\ dir" dest
同步
如果计划定期同步目录,则使用rsync更有意义。它在两个目录之间执行增量操作,从而节省了传输时间和在线数据。
rsync -r -a -v -e ssh --delete source_dir user@server:dest
以下是一些最常见的rsync选项的列表:(摘自此处)
希望有帮助!
您可以通过以下方式从服务器到达本地路径
scp -rp user@server:directoryname(full path) .