Как эффективно сканировать удаленную файловую систему? - PullRequest
0 голосов
/ 21 сентября 2009

У меня есть ограничение по времени, и я хотел бы знать, каков эффективный способ удаленного сканирования файловой системы (в крайнем случае речь идет о 50 миллионах файлов)? Команда dir принимает возрасты (около 20 часов !!!).

Ответы [ 3 ]

1 голос
/ 21 сентября 2009

Если вы читаете содержимое более 50 миллионов файлов, то, по определению, вы ограничены самым низким из этих трех вещей:

  1. Удаленный ввод / вывод (диск)
  2. пропускная способность сети;
  3. Местное время обработки (ЦП)

Если вы делаете один файл за раз, вы можете ускорить его, распараллелив алгоритм. Предполагая, что он оптимально распараллелен, вы будете ограничены одним из вышеперечисленных.

(1) можно решить только путем сканирования / чтения меньшего количества файлов. (2) можно решить только путем запуска на удаленном хосте или уменьшения количества файлов, которые необходимо сканировать. (3) можно решить только путем увеличения ЦП, распределения работы и / или выполнения в удаленной системе.

Уменьшение рабочей нагрузки может быть достигнуто за счет изменения алгоритма, изменения требований, результатов кэширования, где это уместно, или некоторой их комбинации.

1 голос
/ 22 сентября 2009

войти на сервер, вывести список файлов как:

 linux: $ ls > list.txt
 windows: dir /b > list.txt

сжатие (удаленно) list.txt с вашим любимым компрессором и загрузка его в локальную систему.

Вы можете создать скрипт для автоматизации задачи.

1 голос
/ 21 сентября 2009

Создайте таблицу поиска либо локально, либо на удаленном сервере, периодически обновляйте ее и выполняйте поиск. Вот как команда locate работает в Unix. Это намного, намного быстрее (O (1), если вы реализуете таблицу поиска в виде хэша), чем обход файловой системы каждый раз, когда вам нужно искать файл. Цена, которую вы платите, заключается в том, что она актуальна только в последний раз, когда вы проиндексировали файловую систему.

...