348

我正在尝试使用命令行 ftp 客户端对文件夹进行 ftp,但到目前为止,我只能使用“get”来获取单个文件。

4

12 回答 12

677

您可以依赖 wget 通常可以正确处理 ftp get (至少以我自己的经验)。例如:

wget -r ftp://user:pass@server.com/

您也可以使用-m适合镜像的。目前相当于-r -N -l inf.

如果凭据详细信息中有一些特殊字符,则可以指定--user--password参数以使其工作。具有特定字符的自定义登录示例:

wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/

正如@asmaier 所指出的,请注意,即使-r是用于递归,它的默认最大级别为 5:

-r
--recursive
    Turn on recursive retrieving.

-l depth
--level=depth
    Specify recursion maximum depth level depth.  The default maximum depth is 5.

如果您不想错过子目录,最好使用镜像选项-m

-m
--mirror
    Turn on options suitable for mirroring.  This option turns on recursion and time-stamping, sets infinite
    recursion depth and keeps FTP directory listings.  It is currently equivalent to -r -N -l inf
    --no-remove-listing.
于 2008-09-22T09:01:46.213 回答
181

只是为了补充Thibaut Barrère 给出的答案

我用了

wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory

请注意服务器名称后的双斜杠。如果您不添加额外的斜杠,则路径是相对于用户的主目录的。

  • -nH避免创建以服务器名称命名的目录
  • -nc如果目标上已经存在新文件,则避免创建新文件(它只是被跳过)
  • --cut-dirs=5 允许获取 /absolute/path/to/directory 的内容并将其放在启动 wget 的目录中。数字 5 用于过滤掉路径的 5 个分量。双斜线表示一个额外的组件。
于 2011-04-06T14:13:09.683 回答
25
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
于 2008-09-22T09:02:23.417 回答
23

如果lftp安装在您的机器上,请使用mirror dir. 你完成了。如果您想递归下载目录,请参阅下面 Ciro 的评论。

于 2012-12-08T18:20:37.157 回答
17

如果您可以使用scp代替ftp,该-r选项将为您执行此操作。我会检查您是否可以使用比 FTP 更现代的文件传输机制。

于 2008-09-22T08:59:12.707 回答
12

请改用 WGet。它支持 HTTP 和 FTP 协议。

wget -r ftp://mydomain.com/mystuff

祝你好运!

参考: http: //linux.about.com/od/commands/l/blcmdl1_wget.htm

于 2008-09-22T09:05:07.407 回答
7

有 'ncftp' 可用于在 linux 中安装。这适用于 FTP 协议,可用于递归下载文件和文件夹。在linux上工作。已被使用并且在递归文件夹/文件传输中运行良好。

检查此链接... http://www.ncftp.com/

于 2008-09-22T09:05:21.493 回答
3

如果可以的话,我强烈建议您tarbzip(或者gzip,随便什么东西)远程机器上的目录——对于任何显着大小的目录,节省的带宽可能值得花时间进行压缩/解压缩。

于 2008-09-22T09:02:44.197 回答
3

如果你想坚持使用命令行 FTP,你应该尝试 NcFTP。然后您可以使用 get -R 递归获取文件夹。你也将完成。

于 2008-09-22T09:07:45.247 回答
3

wget -r ftp://url

完美适用于 Redhat 和 Ubuntu

于 2010-05-07T22:01:42.770 回答
2

你不应该使用ftp. 就像telnet它没有使用安全协议一样,密码以明文形式传输。这使得第三方很容易捕获您的用户名和密码。

要远程复制远程目录,这些选项更好:

  • rsync如果您可以通过 登录,它是最适合的工具ssh,因为它只复制差异,并且可以轻松地在中间重新启动,以防连接中断。

  • ssh -r是递归复制目录结构的次佳选择。

要递归地获取文件,您可以使用如下脚本: https ://gist.github.com/flibbertigibbet/8165881

看:

于 2013-11-17T20:08:43.183 回答
-6

通过 PROMPT 命令切换提示。

用法:

ftp>cd /to/directory    
ftp>prompt    
ftp>mget  *
于 2011-03-14T10:20:00.707 回答