如何递归列出远程FTP的目录内容

如何递归列出远程FTP的目录内容,ftp,Ftp,从远程UNIX FTP服务器下载文件后,需要验证是否已正确下载所有文件。您将获得与Windows命令提示符中的“dir/s”命令类似的信息。FTP客户端在Windows上运行。遗憾的是,这是为Unix/Linux用户编写的:/ 就我个人而言,我安装CYGWIN只是为了让LFTP/RSYNC的Linux二进制文件在windows上工作,因为似乎没有任何东西可以与之竞争 As@zadok.myopenid.com 提到rsync,这似乎是一个使用CYGWIN的windows构建(如果您最终能够获得对

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

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

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

As@zadok.myopenid.com 提到rsync,这似乎是一个使用CYGWIN的windows构建(如果您最终能够获得对box的ssh访问)

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


如果您获得CYGWIN/Linux:

这是我最喜欢的探索工具

它几乎可以做bash所能做的一切,尽管只是远程操作

例如:

$ lftp mirror.3fl.net.au lftp mirror.3fl.net.au:~> ls drwxr-xr-x 14 root root 4096 Nov 27 2007 games drwx------ 2 root root 16384 Apr 13 2006 lost+found drwxr-xr-x 15 mirror mirror 4096 Jul 15 05:20 pub lftp mirror.3fl.net.au:/> cd games/misc 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 mirror.3fl.net.au lftp mirror.3fl.net.au:~>ls drwxr-xr-x 14根根根4096 2007年11月27日小游戏 drwx------2根根根目录16384 2006年4月13日丢失+找到 drwxr-xr-x 15镜像镜像4096 Jul 15 05:20发布 lftp mirror.3fl.net.au:/>cd游戏/杂项 lftp mirror.3fl.net.au:/games/misc>find ./ 梦幻国际象棋/ /梦幻国际象棋/全场比赛/ ./dreamchess/full_game/dreamchess-0.2.0-win32.exe /火上浇油/ /火上烦恼/全场游戏/ ./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\u 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>
如果您有ssh访问权限,请改用rsync。这是一款更好的数据传输应用程序

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

执行以下操作:

ls -lR

……

您可以使用apache commons net中的ftp.listFiles(“目录”)并可以编写自己的BFS或DFS以递归方式获取所有文件。

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

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

如果您想自动执行此操作:
lftp-u user,password-e'find/;再见'host>file_list
或只需获取文件计数
lftp-u user,password-e'find/;再见'host |-wc-l
要了解更多详细信息,您还可以在
lftp
中添加
-l
选项
find
find-l
并添加可选的目录名。+1,但显然有一个输入错误:
ls-R
工作正常,而
1
似乎出错(它从列表中删除信息,不再递归)我想您想要的是
ls-lR
(字母l,不是1)