dbmaster
@dbmaster

Как автоматизировать удалённый поиск файлов?

Привет!

По случаю весны, системные администраторы жалуются, что еженедельный бакап всех серверов занимает больше дня и попросили почистить бакапы. У нас больше 20 sql-серверов, и поэтому искать вручную неинтересно.

Задача такая:
— найти *.bak файлы «большого» размера, которые не обновлялись больше месяца
— найти инсталяшки (*.exe, *.zip, etc) большого размера
— найти отсоединённые файлы баз данных (mdf / ndf / ldf)

В качестве решения выбрали WMI

Поиск
select * from CIM_DataFile where extension='bak' работает
с приемлемой скоростью

а вот поиски
select * from CIM_DataFile where name like '%.bak' and FileSize > 1000000
select * from CIM_DataFile where FileSize > 100000000
select * from CIM_DataFile

работают «бесконечно»

сервер не загружен на 100%, из заметных по загрузке процессов только антивирус.

Поиск в гугле привёл на статью technet.microsoft.com/en-us/library/ee176621.aspx
в которой пишут что поиск через WMI на 80.000 файлах в 6 раз медленнее, но это в Windows 2000.

Окружение у нас Windows 2003 — 2008 R2.

Как можно ускорить поиск и какие варианты ещё есть?

Спасибо
  • Вопрос задан
  • 2995 просмотров
Пригласить эксперта
Ответы на вопрос 3
AlekseyPolyakov
@AlekseyPolyakov
Я думаю, что вашу идеалогию нужно немного изменть, по моему мнению достаточнм будет ориентироваться на дату создания файла и его расширение. Если у вас MSSQL, то я не вижу проблем, настройте очистку файлов по дням, это онин из стандартных регламентных операций MSSQL. Решения по поиску файлов по дате, есть в гугле.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Мне кажется простой скрипт перебора файлов с моментальным удалением вам подойдет.
Ответ написан
Комментировать
@ComodoHacker
Какие варианты еще есть?

  1. LogParser. Синтаксис примерно тот же, SQL-ный, это большой плюс, позволяет задавать хитрые условия и формировать отчеты. Насчет производительности — уверен, что будет быстрее. Насколько помню, он работает не через WMI, а напрямую с WinAPI. Помню, поиск всех недавно измененных файлов на диске C: (домашняя система) занимал не больше пары минут.
  2. Команда ForFiles. В 2008 есть штатно, в 2003 можно скопировать. Быстродействие собственно поиска, думаю, не сильно отличается от dir /s. Другое дело, что для выполнения действия над каждым отобранным файлом создается новый процесс, это может замедлить.
  3. PowerShell. Про быстродействие ничего не скажу, опыта нет. Но думаю, что все в порядке (если не через WMI работать).
  4. Ну и наконец, банальный dir c обработкой результата в батнике или на js.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы