如何从ftp下载最新的文件夹

时间:2011-11-23 16:29:00

标签: ant ftp

嗨,有没有人知道如何从FTP下载最新的文件夹。我有像Evolvenet_20111112.1这样的文件夹 Evolvenet_20111113.1 从这里我必须下载最新的文件夹。任何人都可以帮我一个例子。

提前致谢, Bhasker。


Ftp列表无效,因为我的构建文件夹位于\ build \ Evolvenet 2010 \中。登录到ftp服务器后,列表将采用默认文件夹。有没有办法指定转到该文件夹​​和列表。

谢谢, Bhasker。

2 个答案:

答案 0 :(得分:5)

我认为您需要做的就是将其分解为步骤:

  1. 使用FTP列出相关文件
  2. 从列表中提取文件名
  3. 对文件名进行排序
  4. 从排序列表中取出第一个或最后一个文件名
  5. 使用FTP获取该文件
  6. 由于您的文件是使用yyyyMMdd.<version>模式命名的,因此您只需按名称对文件进行排序即可按日期顺序排列。

    第1步:列出类似这样的文件

    <ftp action="list" 
         server="${server}" userid="${user}" 
         password="${password}" listing="list.txt">
      <fileset>
        <include name="Evolvenet_*"/>
      </fileset>
    </ftp>
    

    步骤2-4 :从列表中提取最新文件

    <loadresource property="newest.file">
      <concat>
        <fileset file="list.txt"/>
      </concat>
      <filterchain>
        <tokenfilter>
          <replaceregex pattern=".*(Evolvenet_.*)" replace="\1"/>
        </tokenfilter>
        <sortfilter reverse="true"/>
        <headfilter lines="1"/>
      </filterchain>
    </loadresource>
    
    <echo message="newest.file ${newest.file}"/>
    

    第5步:使用FTP获取该文件

    <ftp action="get"
         server="${server}" userid="${user}"
         password="${password}">
      <fileset dir="download">
        <include name="${newest.file}"/>
      </fileset>
    </ftp>
    

    我已回答好像Evolvenet_ *是文件,但我注意到你说它们是目录。我认为所有需要更改以下载目录的是FTP get中的include子句:

    <include name="${newest.file}/**"/>
    

    列出某个目录(而不是用户的登录目录)的内容,使用文件集的dir属性指定远程目录,例如

      <fileset dir="/build/Evolvenet 2010">
        <include name="*"/>
      </fileset>
    

答案 1 :(得分:0)

看看这里:ftp task

现在没有具体说明,我们无法提供太多帮助。关于要选择的文件:

<ftp action="get"
       server="ftp.hypthetical.fr"
       userid="anonymous"
       password="me@myorg.com"
       defaultDateFormatConfig="d MMM yyyy"
       recentDateFormatConfig="d MMM HH:mm"
       serverLanguageCodeConfig="fr">
     <fileset dir="htdocs/manual">
      <include name="**/*.html"/>
    </fileset>
  </ftp>

从手册中。您可以提供可以自定义的文件集。

相关问题