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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
22
0
48 571
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

Лично я бы установил CYGWIN только для того, чтобы заставить Linux-бинарные файлы LFTP / RSYNC работать в 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

camomileCase 31.07.2012 22:58

Чтобы получить более подробную информацию, вы также можете добавить параметр -l к find в lftp: find -l и добавить необязательное имя каталога.

nealmcb 07.05.2017 02:54

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

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

Сделай это :

ls -lR

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

+1, но, видимо, есть опечатка: ls -R работает хорошо, а 1 кажется неправильным (он удаляет информацию из списка и больше не выполняет рекурсию)

CapelliC 15.08.2012 14:43

Я полагаю, вам нужен ls -lR (буква l, а не 1)

nealmcb 07.05.2017 02:51

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

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

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

Другие вопросы по теме