Как рекурсивно отображать содержимое каталога удаленного FTP

После загрузки файлов с удаленного FTP-сервера UNIX вы хотите убедиться, что вы загрузили все файлы правильно. Как минимум, вы получите информацию, аналогичную команде «dir /s» в командной строке Windows. FTP-клиент работает в Windows.


ftp
person edygunawan    schedule 19.09.2008    source источник


Ответы (5)


К сожалению, это было написано для пользователей Unix/Linux :/

Лично я бы установил CYGWIN только для того, чтобы двоичные файлы LFTP/RSYNC для Linux работали на Windows, поскольку, похоже, нет ничего, что могло бы с ним конкурировать.

Как @zadok.myopenid.com упомянул rsync, похоже, это сборка Windows для него с использованием CYGWIN (если вам удастся в конечном итоге получить 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 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> 
person Kent Fredric    schedule 19.09.2008
comment
Если вы хотите автоматизировать это: lftp -u user,password -e 'find /;bye' host > file_list или просто получить количество файлов lftp -u user,password -e 'find /;bye' host | -wc -l - person camomileCase; 31.07.2012
comment
Чтобы получить более подробную информацию, вы также можете добавить параметр -l к find в lftp: find -l и добавить необязательное имя каталога. - person nealmcb; 07.05.2017

Сделай это :

ls -lR

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

person jamesmar    schedule 11.12.2010
comment
+1, но, видимо, опечатка: ls -R работает хорошо, а 1 кажется неправильным (удаляет информацию из списка и больше не рекурсирует) - person CapelliC; 15.08.2012
comment
Я полагаю, вы хотите ls -lR (буква l, а не 1) - person nealmcb; 07.05.2017

Если у вас есть доступ по ssh, используйте вместо этого rsync. Это гораздо лучшее приложение для передачи данных.

Возьмите предохранитель для вашей ОС и загрузите ftpfs. Это позволит вам монтировать удаленный ftp-каталог локально, и вы можете использовать dir /s или любое другое приложение, которое вы хотите.

person Jonah Braun    schedule 19.09.2008

Предполагая, что вы используете простой ftp через командную строку, используйте команду dir с параметром -Rl для рекурсивного поиска и копирования его в файл, а затем выполните поиск файла с помощью grep, find или любого другого способа, поддерживаемого вашей ОС.

ftp> dir -Rl education.txt вывод в локальный файл: education.txt? y 227 Вход в пассивный режим (9,62,119,15,138,239) 150 Открытие подключения для передачи данных в режиме ASCII для списка файлов 226 Передача завершена

person SmitaK    schedule 15.06.2015

Вы можете использовать ftp.listFiles("directory") из apache-commons-net и можете написать свою собственную BFS или DFS для рекурсивного извлечения всех файлов.

person Raja    schedule 10.04.2013