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

3

大家好,有人知道如何从FTP下载最新的文件夹吗?我有像Evolvenet_20111112.1、Evolvenet_20111113.1这样的文件夹,我需要下载最新的文件夹。请问有人可以给出一个例子吗?

谢谢提前, Bhasker。


因为我的构建文件夹在 \build\Evolvenet 2010\ 中,所以Ftp列表不起作用。登录到FTP服务器后,它将采取默认文件夹。是否有任何方法指定转到该文件夹并列出其中的内容?

谢谢, Bhasker。


关于如何列出显式文件夹,我已经更新了我的答案。 - ewan.chalmers
2个回答

5
我认为你需要将它分解成几个步骤:
  1. 使用FTP列出相关文件
  2. 从列表中提取文件名
  3. 对文件名进行排序
  4. 从排序后的列表中获取第一个或最后一个文件名
  5. 使用FTP获取该文件
由于你的文件按照 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}"/>

步骤五: 通过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>

非常感谢您的帮助。我会尝试这个并让您知道。 - bhasker

0

请看这里:ftp任务

现在,如果没有具体的信息,我们就无法提供太多帮助。关于您想要选择的文件:

<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>

来自手册。您可以提供一个文件集,您可以进行自定义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接