我正在尝试使用命令行ftp客户端通过ftp文件夹,但是到目前为止,我只能使用'get'来获取单个文件。
#1 楼
您可以依靠通常可以正确处理ftp的wget(至少以我自己的经验)。例如: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/
EDIT
@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.
评论
最好使用wget -m(--mirror)。默认情况下,wget -r的递归深度限制为5。
– asmaier
2011年7月7日在19:28
我还必须在Red Hat上使用--user和--password。我的wget是:修改了GNU Wget 1.11.4 Red Hat我不知道这是版本还是发行版...
– devin
2012年1月17日在20:18
您可以使用-l 0设置无限递归级别,因此无需使用--mirror,这可能会产生一些有害的副作用,例如.listing文件。
–赫纳特
2012年8月8日21:52
我使用wget --ask-password -rl 99 ftp://user@server.com。这样,密码在ps中不可见,并且不会保留在历史记录中。当然,根据ftp的性质,它是不加密地发送到服务器的。
–沃尔特·特罗斯(Walter Tross)
13-10-25在22:25
提醒bash newbs:如果用户名或密码具有控制字符(例如$),则必须使用单引号,例如--user ='用户'--password ='pa $$ word'
– tobek
2015年9月15日在0:48
#2 楼
只是为了补充ThibautBarrè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和to的内容将其放在启动wget的目录中。数字5用于过滤路径的5个组成部分。双斜杠表示多余的组成部分。评论
辉煌。跳过已经存在的文件的功能非常适合赶上服务器迁移中的最新添加。 rsync效率更高,更灵活,但是有时该选项不可用,并且只能使用FTP。
–詹森
2012年10月23日19:50
这里的参数很好,特别是-nc和--cut-dirs。感谢分享!
–兰斯·克利夫兰
13-10-24在22:50
我并不总是信任“跳过现有文件”,因为其中一个可能不完整或大小和内容不同,但是很好,他提到了该选项
–丹尼尔·W。
13年11月14日在8:48
即使在今天,当无法使用rsync时,我仍然使用此wget命令。 -nc和--cut-dirs非常有用!
– Rob W
15年1月27日在19:11
太棒了!而且,如果您不想在命令行上输入密码,则可以使用--ftp-user = USER和--ask-password。
–shoover
2015年6月5日在23:03
#3 楼
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
评论
我无法使用参数登录到FTP服务器,但是在启动ncftp之后使用以下结构打开ftp:// USERNAME:PASSWORD @ HOST…
–feeela
2011年10月7日10:22
+1-我知道这则帖子很旧,但是我刚发现它,并且ncftp真正易于使用。我使用-R进行ncftpget的递归获取
– Zack Macomber
2012年2月20日在22:57
绝对比wget更可靠,在TAR模式下也更快。谢谢!
– lencinhaus
13年11月22日在11:04
如Ubuntu 14.04所述,这不起作用。对我有用的语法是“ get -R directory”而不是mget。
–伊凡
2014年9月3日下午16:39
在Ubuntu 14.04上为我工作。我不必担心这一切都在那里。
– Ashley
2015年12月8日在11:24
#4 楼
如果您的计算机上安装了lftp
,请使用mirror dir
。您完成了。如果您要递归下载目录,请参见下面Ciro的评论。 评论
也可以使用mirror ./递归下载当前路径中的所有文件和文件夹。
– Nabi K.A.Z.
2014年7月9日下午0:38
您也可以只为当前目录及其子文件夹键入mirror。
–迈克尔
16年5月23日在11:52
我用过:$ mkdir -p〜/ example.com / dir $ lftp -u用户,密码ftp.example.com lftp>设置ssl:verify-certificate no lftp>镜像目录〜/ example.com / dir
– jrosell
20 Jul 23'9:06
#5 楼
如果可以使用scp
代替ftp
,则-r
选项将为您完成此操作。我将检查是否可以使用比FTP更现代的文件传输机制。评论
我之所以投票赞成这是因为这确实是我的第一个想法,即使它不能严格按照原样回答问题。
–metao
08-09-22在9:04
您建议@ greg-hewgill哪一个?我有类似的问题
–米歇尔·冈达(Michal Gonda)
16年8月25日在11:25
scp仍将尝试使用ssh,如果您只有FTP凭据,它将无法使用。在回应2008年的评论时感到很奇怪,他说我坚持使用的技术不是现代技术:(很好的2008年,您发表评论的那天我已经18岁了。
– aexl
17年6月17日19:34
#6 楼
改用WGet。它支持HTTP和FTP协议。wget -r ftp://mydomain.com/mystuff
祝你好运!
参考:http://linux.about.com/od/commands /l/blcmdl1_wget.htm
评论
这是最简单的解决方案,对我而言就足够了。感谢您的分享。
– Honza P.
20 Jul 27 '13:11
#7 楼
有“ ncftp”可用于在Linux中安装。这适用于FTP协议,可用于递归下载文件和文件夹。在linux上工作。已使用递归文件夹/文件传输,并且工作正常。检查此链接... http://www.ncftp.com/
评论
ncftp在Windows上也可以工作
–伊利亚
08/09/22在9:14
我爱ncftp!谢谢。
– jocull
2012年10月26日19:39
#8 楼
如果可以的话,我强烈建议您tar
和bzip
(或gzip
,无论您的船什么都漂浮)在远程机器上的目录-对于任何大小的目录,节省带宽可能值得花时间压缩/解压缩。 br />评论
也许是在2008年,但是在2013年,带宽不再重要,您可能拥有FTP但没有控制台访问权限:-)
–丹尼尔·W。
13年11月14日在8:49
#9 楼
如果要坚持使用命令行FTP,则应尝试使用NcFTP。然后,您可以使用get -R递归获取文件夹。您还将获得完成。#10 楼
wget -r ftp://url
非常适合Redhat和Ubuntu
#11 楼
您不应使用ftp
。与telnet
一样,它也不使用安全协议,并且密码以明文形式传输。这使第三方很容易捕获您的用户名和密码。要远程复制远程目录,这些选项更好:
rsync
是最好的是适合的工具,如果您可以通过ssh
登录,因为它仅复制差异,并且在连接断开时可以很容易地在中间重新启动。ssh -r
是递归复制目录结构的第二好的选择。请参见:
rsync手册页
ssh手册页
评论
不安全,仅ftp
– JosFabre
2015年9月25日下午16:34
现在是2015年。不应使用FTP。
–提洛
2015年9月29日,下午3:22
我同意。并且应该始终提出提高安全性的建议。但是问题是关于FTP的,所以说一个人不应该使用它是没有帮助的
– JosFabre
2015年10月8日在8:43
我谨不同意。他们为这项工作使用了错误的工具。他们应该学会使用安全的最新工具,而不是1980年代的ftp。更具体地说,没有人应该再运行ftp服务器了:P
–提洛
2015年10月9日在5:14
抱歉,但是就在上周,我正在访问仅具有FTP连接的服务器。我的任务是将其迁移。
–安蒂·哈帕拉(Antti Haapala)
16年3月11日在19:37
#12 楼
通过PROMPT命令切换提示。用法:
ftp>cd /to/directory
ftp>prompt
ftp>mget *
评论
Down0投票:mget不是递归的。
–兰斯·克利夫兰
13-10-24在22:49
评论
正确的答案是来自lkuty的11年4月6日14:13。不要使用mget,它根本不是递归的。来自08年9月22日9:01的答案蒂博·巴雷尔(ThibautBarrère)更容易理解,但必须添加注释中提到的选项-l 0