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

我试图使用命令行ftp客户端来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 <user> -p <pass> <server>
    ncftp> mget directory
    
    链接地址: http://www.djcxy.com/p/78113.html

    上一篇: How to recursively download a folder via FTP on Linux

    下一篇: Git: unable to create symlink (File name too long)