如何在 sftp 中获取整个目录?

Mat*_*hew 245 linux sftp

我刚刚学习使用sftp,我想从远程计算机复制一个目录到我的本地计算机。如果我尝试

get [directory]
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

Cannot download non-regular file: /home/mpirocch/Documents
Run Code Online (Sandbox Code Playgroud)

get -R 也不行。

小智 340

使用-r(递归)标志:

get -r *
Run Code Online (Sandbox Code Playgroud)

  • 给我:`get:Invalid flag -r` (31认同)
  • 感谢您提出实际回答问题的答案。 (21认同)
  • @silvinci 不是*所有*当前系统。CentOS 6.4 的非法选项 openssh-clients-5.3p1-84.1.el6.x86_64 (15认同)
  • 这也给了我无效的标志。我不确定这是否在所有系统上都受支持。 (3认同)

Cri*_*itu 58

用:

scp -r mpirocch@my-server:/home/mpirocch/Documents Documents
Run Code Online (Sandbox Code Playgroud)

  • 某些系统可能允许`sftp`,但不允许`scp` 访问。 (8认同)
  • 这是有效的,但是能够从 SFTP 执行此操作会很好(这样我就可以在复制之前查看我复制的内容)。这可能吗? (5认同)
  • 这不能回答问题。 (2认同)

小智 44

使用lftp

lftp sftp://user@host
Run Code Online (Sandbox Code Playgroud)

然后,在lftp内,cd进入要复制的目录,使用mirror命令递归下载选中的目录,如下:

mirror
Run Code Online (Sandbox Code Playgroud)

此命令接受选项和参数:

镜像 [选项] [[目标]]

例如,-R(or --reverse) 选项将使其将本地目录树上传到远程目录:

mirror -R
Run Code Online (Sandbox Code Playgroud)

有关其他命令和选项,请参阅项目站点Debian.org 上lftp(1)手册页。

  • +1 lftp 就像是一小束魔法和欢乐! (5认同)

nwg*_*gat 23

好吧,这个小指南应该会有所帮助,使用 lftp 将远程服务器镜像到本地文件夹

lftp sftp://user:password@server.org:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'

  • sftp:// = 使用 SFTP 协议
  • mirror = 镜像模式
  • verbose = 显示正在下载的文件
  • use-pget-n = 段数,对于加速大文件非常有用
  • parallel = 同时下载乘数文件

如果要并行下载文件,请use-pget-n=8使用--parallel=8

希望这有助于任何需要将远程文件夹镜像到本地文件夹的人


Rya*_*son 16

如果你能找到更好的东西,不要直接使用 sftp 程序。对于 Linux,许多文件管理器(至少是 Nautilus 和 Dolphin,GNOME 和 KDE 的)本机支持 sftp,并且总是有 sshfs。对于 Windows,有 WinSCP,可能还有其他。所有这些的目的是让您通过 sftp 访问文件,就像它们在常规文件系统上一样,因此您不必关心是否通过 sftp 访问它们。


Ken*_*nan 14

尝试mget代替get.

说明:如果您在要复制的目录中,mget 它将起作用;如果你做这样的事情:

sftp> cd dir_to_get
sftp> mget *
Run Code Online (Sandbox Code Playgroud)

它将获取该目录中的所有文件。但是,它不会递归地获取任何子目录的内容。

  • 无法使用此下载非常规文件 (2认同)
  • 这在“get -r”不起作用的系统上对我有用。 (2认同)

drk*_*gel 10

get -r [directory]
Run Code Online (Sandbox Code Playgroud)

获取[directory]和它下面的所有内容,其中r代表递归。我只是通过helpsftp.

  • 这是 2010 年 11 月 29 日*(大约一年半前)的 [answer](http://superuser.com/a/216447/2357) 的副本。 (4认同)
  • IMO这是这个问题的最佳答案。 :) (2认同)