【问题标题】:How to list directory content of remote FTP, recursively如何递归地列出远程FTP的目录内容
【发布时间】:2010-09-11 00:35:50
【问题描述】:

从远程 UNIX FTP 服务器下载文件后,您需要验证是否已正确下载所有文件。最少您会在 Windows 命令提示符中获得类似于“dir /s”命令的信息。 FTP 客户端在 Windows 上运行。

【问题讨论】:

    标签: ftp


    【解决方案1】:

    遗憾的是,这是为 Unix/Linux 用户编写的:/

    就个人而言,我会安装 CYGWIN 只是为了让 LFTP/RSYNC 的 Linux 二进制文件在 Windows 上运行,因为似乎没有任何东西可以与之竞争。

    作为@zadok.myopenid.com 提到 rsync,这似乎是使用 CYGWIN 为它构建的 Windows(如果您最终能够通过 ssh 访问该框)

    http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp

    Rsync 很方便,因为它将所有内容与校验和进行比较,并以最佳方式传输部分更改块。


    如果你得到 CYGWIN/Linux:

    http://lftp.yar.ru/ 是我最喜欢的探索工具。

    它几乎可以做 bash 可以做的所有事情,尽管是远程的。

    例子:

    $ lftp mirror.3fl.net.au lftp mirror.3fl.net.au:~> ls drwxr-xr-x 14 root root 4096 Nov 27 2007 游戏 drwx------ 2 root root 16384 2006 年 4 月 13 日 lost+found drwxr-xr-x 15 镜子 镜子 4096 Jul 15 05:20 pub lftp mirror.3fl.net.au:/> cd 游戏/杂项 lftp mirror.3fl.net.au:/games/misc>find ./ ./dreamchess/ ./dreamchess/full_game/ ./dreamchess/full_game/dreamchess-0.2.0-win32.exe ./frets_on_fire/ ./frets_on_fire/full_game/ ./frets_on_fire/full_game/FretsOnFire-1.2.451-macosx.zip ./frets_on_fire/full_game/FretsOnFire-1.2.512-win32.zip ./frets_on_fire/full_game/FretsOnFire_ghc_mod.zip ./gametap_setup.exe …… lftp mirror.3fl.net.au:/games/misc> du gametap_setup.exe 32442 gametap_setup.exe lftp mirror.3fl.net.au:/games/misc> du -sh gametap_setup.exe 32M gametap_setup.exe lftp mirror.3fl.net.au:/games/misc>

    【讨论】:

    • 如果您想自动执行此操作:lftp -u user,password -e 'find /;bye' host > file_list 或只是获取文件计数lftp -u user,password -e 'find /;bye' host | -wc -l
    • 要获得更多详细信息,您还可以在find 中添加-l 选项lftpfind -l 并添加可选目录名称。
    【解决方案2】:

    这样做:

    ls -lR
    

    ........

    【讨论】:

    • +1,但显然有一个错字:ls -R 运行良好,而 1 似乎错误(它从列表中删除信息并且不再递归)
    • 我想你想要ls -lR(字母l,而不是1)
    【解决方案3】:

    如果您有 ssh 访问权限,请改用 rsync。这是一个更好的数据传输应用程序。

    为您的操作系统获取保险丝并加载 ftpfs。这将允许您在本地挂载远程 ftp 目录,并且您可以使用 dir /s 或您想要的任何其他应用程序。

    【讨论】:

      【解决方案4】:

      假设您通过命令行使用简单的 ftp, 使用带有 -Rl 选项的 dir 命令递归搜索并将其复制到文件中,然后使用 grep、find 或您的操作系统支持的任何方式搜索文件。

      ftp> dir -Rl education.txt 输出到本地文件:education.txt?是的 227进入被动模式(9,62,119,15,138,239) 150 打开文件列表的 ASCII 模式数据连接 226 传输完成

      【讨论】:

        【解决方案5】:

        您可以使用来自 apache-commons-net 的 ftp.listFiles("directory"),并且可以编写自己的 BFS 或 DFS 以递归方式获取所有文件。

        【讨论】:

          猜你喜欢
          • 2015-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-28
          • 1970-01-01
          • 2010-11-30
          • 1970-01-01
          相关资源
          最近更新 更多