我正在尝试使用命令行ftp client ftp文件夹,但到目前为止我只能使用'get'来获取单个文件.
你可以依赖通常处理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/
编辑
正如@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.
只是为了补充ThibautBarrère给出的答案.
我用了
wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory
请注意服务器名称后面的双斜杠.如果我没有添加额外的斜杠,则路径相对于用户的主目录.
-nH避免创建以服务器名称命名的目录
-nc避免创建一个新文件,如果它已经存在于目标上(刚刚被跳过)
--cut-dirs = 5允许我将/ absolute/path /的内容带到/目录并将其放在我启动wget的目录中.数字5用于过滤掉路径的5个组件.双斜杠意味着额外的组件.
ncftp -u-p ncftp> mget directory
如果lftp
您的计算机上已安装,请使用mirror dir
.你完成了.如果要递归下载目录,请参阅下面的Ciro注释.
如果您可以使用scp
而不是ftp
,该-r
选项将为您执行此操作.我会检查你是否可以使用比FTP更现代的文件传输机制.
请改用WGet.它支持HTTP和FTP协议.
wget -r ftp://mydomain.com/mystuff
祝好运!
参考:http://linux.about.com/od/commands/l/blcmdl1_wget.htm
有'ncftp'可以在linux中安装.这适用于FTP协议,可用于递归下载文件和文件夹.适用于Linux.已经使用并且正常用于递归文件夹/文件传输.
查看此链接... http://www.ncftp.com/