我试图使用命令行ftp客户端ftp文件夹,但到目前为止,我只能使用“get”来获取单个文件。
您可以依赖wget,它通常正确地处理ftp get(至少在我自己的经验中)。例如:
wget -r ftp://user:pass@server.com/
您也可以使用-m,它适用于镜像。它目前相当于-r -N - linf。
如果在凭据详细信息中有一些特殊字符,可以指定——user和——password参数以使其工作。使用特定字符自定义登录的示例:
wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/
正如@asmaier指出的,注意即使-r用于递归,它的默认最大级别为5:
- r ——递归 打开递归检索。 - l深度 ——水平=深度 指定递归最大深度级别的深度。默认最大深度为5。
如果你不想错过subdirs,最好使用镜像选项,-m:
- m ——镜子 打开适合镜像的选项。此选项启用递归和时间戳,设置为无限 递归深度,并保持FTP目录清单。它目前相当于-r -N - linf ——no-remove-listing。
如果可以的话,我强烈建议您在远程机器上对目录进行tar和bzip(或gzip,随便什么都行)—对于任何大小的目录,节省的带宽可能都是值得花时间进行压缩/解压缩的。
使用WGet代替。支持HTTP和FTP协议。
wget -r ftp://mydomain.com/mystuff
好运!
参考:http://linux.about.com/od/commands/l/blcmdl1_wget.htm
在linux中可以安装“ncftp”。它在FTP协议上工作,可用于递归地下载文件和文件夹。适用于linux。用于递归文件夹/文件传输,并且运行良好。
检查这个链接…http://www.ncftp.com/
只是为了补充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个组成部分。双斜杠表示一个额外的组件。
你不应该使用ftp。像telnet一样,它不使用安全协议,密码以明文传输。这使得第三方很容易获取您的用户名和密码。
要远程复制远端目录,这些选项更好:
如果可以通过ssh登录,Rsync是最合适的工具,因为它只复制差异,并且在连接中断时可以很容易地在中间重新启动。 SSH -r是递归复制目录结构的次优选择。
要递归地获取文件,你可以使用这样的脚本: https://gist.github.com/flibbertigibbet/8165881
See:
Rsync手册 SSH手册
推荐文章
- 在tmux中保持窗口名称固定
- 如何生成一个核心转储在Linux上的分段错误?
- 在Python中如何在Linux和Windows中使用“/”(目录分隔符)?
- 如何在Apache服务器上自动将HTTP重定向到HTTPS ?
- 如何限制从grep返回的结果的数量?
- 将值从管道读入shell变量
- 以相对于当前目录的路径递归地在Linux CLI中列出文件
- 如何使用xargs复制名称中有空格和引号的文件?
- 在makefile中抑制命令调用的回声?
- 在套接字编程中AF_INET和PF_INET的区别是什么?
- Chmod递归
- 任何方式退出bash脚本,但不退出终端
- 如何查看按实际内存使用情况排序的顶级进程?
- 如何将多行输出连接到一行?
- 使用grep搜索包含点的字符串