当前位置:  开发笔记 > 编程语言 > 正文

如何在Linux上通过FTP递归下载文件夹

如何解决《如何在Linux上通过FTP递归下载文件夹》经验,为你挑选了7个好方法。

我正在尝试使用命令行ftp client ftp文件夹,但到目前为止我只能使用'get'来获取单个文件.



1> Thibaut Barr..:

你可以依赖通常处理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.


更好地使用`wget -m`(` - mirror`).`wget -r`默认限制为递归深度为5.
您可以使用`-l 0`设置无限递归级别,因此不需要使用可能具有一些不需要的副作用的`--mirror`,例如.listing文件
我使用`wget --ask-password -rl 99 ftp:// user @ server.com`.这样,使用`ps`看不到密码,并且密码不会保留在历史记录中.当然,根据ftp的性质,它会以未加密的形式发送到服务器.
我不得不在Red Hat上使用`--user`和`--password`.我的wget是:``GNU Wget 1.11.4 Red Hat modified`我想知道它是版本的东西还是发行版的东西......
提醒bash newbs:如果你的用户名或密码有控制字符(如`$`),你必须使用单引号,例如`--user ='user' - password ='pa $$ word'`

2> Ludovic Kuty..:

只是为了补充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个组件.双斜杠意味着额外的组件.


真棒!如果您不想在命令行上输入密码,可以使用`--ftp-user = USER`和`--ask-password`.
辉煌.跳过已存在的文件的能力非常适合追赶服务器迁移的最新补充.rsync更高效,更灵活,但有时候该选项不可用,只能使用FTP.
我并不总是信任"跳过现有文件",因为其中一个可能不完整或者大小和内容不同但是很好,他提到了选项

3> Vinko Vrsalo..:
ncftp -u  -p  
ncftp> mget directory


这不符合Ubuntu 14.04的规定.对我有用的语法是"get -R directory"而不是mget.

4> Dilawar..:

如果lftp您的计算机上已安装,请使用mirror dir.你完成了.如果要递归下载目录,请参阅下面的Ciro注释.


顺便说一句,`mirror -R dir`执行递归目录上传/更新

5> Greg Hewgill..:

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


我投了这个,因为这完全是我的第一个想法,即使它没有严格按照原样回答问题.

6> Jason Steven..:

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

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

祝好运!

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



7> 小智..:

有'ncftp'可以在linux中安装.这适用于FTP协议,可用于递归下载文件和文件夹.适用于Linux.已经使用并且正常用于递归文件夹/文件传输.

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


ncftp也适用于Windows
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有