После загрузки файлов с удаленного FTP-сервера UNIX вы хотите убедиться, что вы загрузили все файлы правильно. Как минимум, вы получите информацию, аналогичную команде «dir /s» в командной строке Windows. FTP-клиент работает в Windows.
Как рекурсивно отображать содержимое каталога удаленного FTP
Ответы (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>
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
-l к find в lftp: find -l и добавить необязательное имя каталога.
- person nealmcb; 07.05.2017
Сделай это :
ls -lR
..................
ls -R работает хорошо, а 1 кажется неправильным (удаляет информацию из списка и больше не рекурсирует)
- person CapelliC; 15.08.2012
ls -lR (буква l, а не 1)
- person nealmcb; 07.05.2017
Если у вас есть доступ по ssh, используйте вместо этого rsync. Это гораздо лучшее приложение для передачи данных.
Возьмите предохранитель для вашей ОС и загрузите ftpfs. Это позволит вам монтировать удаленный ftp-каталог локально, и вы можете использовать dir /s или любое другое приложение, которое вы хотите.
Предполагая, что вы используете простой ftp через командную строку, используйте команду dir с параметром -Rl для рекурсивного поиска и копирования его в файл, а затем выполните поиск файла с помощью grep, find или любого другого способа, поддерживаемого вашей ОС.
ftp> dir -Rl education.txt вывод в локальный файл: education.txt? y 227 Вход в пассивный режим (9,62,119,15,138,239) 150 Открытие подключения для передачи данных в режиме ASCII для списка файлов 226 Передача завершена
Вы можете использовать ftp.listFiles("directory") из apache-commons-net и можете написать свою собственную BFS или DFS для рекурсивного извлечения всех файлов.