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

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

How to list directory content of remote FTP, recursively

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


可悲的是,这是为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几乎可以做的所有事情,即使是远程的。

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ 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>

做这个 :

1
ls -lR

.....................


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

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


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

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


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


推荐阅读