Форум Кургана и Курганской области и наших друзей

Зима. Форум Кургана и Курганской области и наших друзей
10 Апрель 2020, 03:24:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как быстро удалить миллион файлов в каталоге?  (Прочитано 3522 раз)
0 Пользователей и 1 Гость смотрят эту тему.
xzv
Местная достопримечательность. :D
Канцлер
**********

Карма: 708
Offline Offline

Пол: Мужской
Сообщений: 13877


90027_veteran.gif

СКАЖЕМ НЕТ - ВНЕШНЕМУ УПРАВЛЕНИЮ!


WWW Награды
« : 02 Октябрь 2008, 02:04:10 »

Вирус создал около миллиона файлов в каталоге C:\Windows\System32 такого вида 1353145127812687.dll по 205 байт каждый.... Как их быстро удалить не повредив другую информацию? Комманда del 1*.dll работает, к примеру, около получаса.... а ведь это удаление всего-то около 100 000 файлов... т.е. ждать придётся всего около 5 часов... а быстрее можно?
Записан

Коронованная Особа
Коллежский асессор
******

Карма: 80
Offline Offline

Сообщений: 1604

63525_geniy.gif 90027_veteran.gif


Награды
« Ответ #1 : 02 Октябрь 2008, 02:23:57 »

format c: подойдёт?
Записан
pavel_8729
Тайный советник
*********

Карма: 485
Offline Offline

Пол: Мужской
Сообщений: 5497

90027_veteran.gif 11834_medal2.gif


Награды
« Ответ #2 : 02 Октябрь 2008, 02:39:22 »

походу никак.
[бред]
теоретически можно снять образ, скопировать его на какой-нить супер_пупер_быстрый_рэйд, исправить и залить обратно
[/бред]
Записан
AGhost
Забанен
Тайный советник
*********

Карма: 600
Offline Offline

у пользователя уже 2 предупреждения
Сообщений: 6890


90027_veteran.gif


Награды
« Ответ #3 : 02 Октябрь 2008, 03:56:01 »

Убедись, что включено кэширование (в свойствах винта) и удаляй командой del, быстрее никак. У меня была ситуация - одна софтина насоздавала несколько миллионов файликов (так и не смог определить, сколько именно, на 3 млн терпение лопнуло Улыбка) - del удалял примерно 16 часов. Если не можешь их удалить за раз (маску такую не сделать, как я понял?) - запусти del параллельно по нескольким маскам (1*, 2* и т.д.) - будет быстрее, чем по-очереди.
Записан

Прощайте!
xzv
Местная достопримечательность. :D
Канцлер
**********

Карма: 708
Offline Offline

Пол: Мужской
Сообщений: 13877


90027_veteran.gif

СКАЖЕМ НЕТ - ВНЕШНЕМУ УПРАВЛЕНИЮ!


WWW Награды
« Ответ #4 : 02 Октябрь 2008, 12:06:23 »

format c: подойдёт?
Как их быстро удалить не повредив другую информацию?
crazy


AGHost, За предложение распараллеливания - спасибо, попробую.
Записан

LKA
Модератор
*****

Карма: 529
Offline Offline

Пол: Мужской
Сообщений: 4174


11834_medal2.gif 90027_veteran.gif

хардварепатологоанатом [病理学家硬件]


WWW Награды
« Ответ #5 : 02 Октябрь 2008, 13:09:49 »

Можешь оставить на ночь килять с маской *.dll, только предварительно компашку с виндой в привод вставь.  Веселый
Записан

В кривых руках и коврик глючит.
Tokc
Титулярный советник
*****

Карма: 66
Offline Offline

Пол: Мужской
Сообщений: 893

Про$тоТок$


Награды
« Ответ #6 : 02 Октябрь 2008, 13:35:54 »

Сделать поиск по этой маске, перейти в окно с результатами поиска и делетить нажав шифт.  Софтина которая найдет все файлы за пару минут, хорошая альтернатива встроенному поиску:
http://www.voidtools.com/Everything-1.1.4.301.exe
Записан

-А пиво на клавиатуру тоже вирус пролил?-
ysv
Гость
« Ответ #7 : 03 Октябрь 2008, 00:30:45 »

Убедись, что включено кэширование (в свойствах винта) и удаляй командой del, быстрее никак. У меня была ситуация - одна софтина насоздавала несколько миллионов файликов (так и не смог определить, сколько именно, на 3 млн терпение лопнуло Улыбка) - del удалял примерно 16 часов. Если не можешь их удалить за раз (маску такую не сделать, как я понял?) - запусти del параллельно по нескольким маскам (1*, 2* и т.д.) - будет быстрее, чем по-очереди.

Винт один - распараллелизировать не удатся, даже более того - один поток будет мешать другому...
Записан
AGhost
Забанен
Тайный советник
*********

Карма: 600
Offline Offline

у пользователя уже 2 предупреждения
Сообщений: 6890


90027_veteran.gif


Награды
« Ответ #8 : 03 Октябрь 2008, 01:12:50 »

Винт один - распараллелизировать не удатся, даже более того - один поток будет мешать другому...
Если включено кэширование записи, то на винт по-барабану. И мешать потоки друг другу не будут, т.к. ни один поток не работает непрерывно дольше одного кванта времени (по истечение которого система передает управление другому потоку). Теоретически лучше иметь один рабочий поток на процессор, но на практике идеальное соотношение - 2 рабочих потока на процессор/ядро. При дальнейшем увеличении числа потоков производительность растет незначительно, а с какого-то момента начинает падать. Ну и зависит от того, что именно делает поток. Чем меньше поток нагружает процессор, тем больше их можно запустить.

В случае с del, думаю, достаточно будет 2-3 потоков для одноядерного проца. Для двухядерника можно пустить побольше.
Записан

Прощайте!
ysv
Гость
« Ответ #9 : 03 Октябрь 2008, 01:23:12 »

Винт один - распараллелизировать не удатся, даже более того - один поток будет мешать другому...
Если включено кэширование записи, то на винт по-барабану. И мешать потоки друг другу не будут, т.к. ни один поток не работает непрерывно дольше одного кванта времени (по истечение которого система передает управление другому потоку).

Уничтожение файлов - работа с ФАТОМ (или как там в НТФС) идет блокирование, потоки будут тормозиться блокированием - т.е. винтом.
К тому же один поток может начать пытаться удалять файлы удаленные другим потоком...
Я думаю к тому же кеширование идет только на файлы - на ФАТ кеширование не распространяется.
НТФС вообще по алгоритму похоже на SQL c  блокированием...

Конечно спор решит тест...

Но стопроцентно - тормозящее звено винт, а не ослабая распаралельность ОС...

Записан
AGhost
Забанен
Тайный советник
*********

Карма: 600
Offline Offline

у пользователя уже 2 предупреждения
Сообщений: 6890


90027_veteran.gif


Награды
« Ответ #10 : 03 Октябрь 2008, 02:37:12 »

Уничтожение файлов - работа с ФАТОМ (или как там в НТФС) идет блокирование, потоки будут тормозиться блокированием - т.е. винтом.
К тому же один поток может начать пытаться удалять файлы удаленные другим потоком...
Я думаю к тому же кеширование идет только на файлы - на ФАТ кеширование не распространяется.
НТФС вообще по алгоритму похоже на SQL c  блокированием...
Если честно - полный бред. Система не сбрасывает на винт данные после каждой операции. Записываемые данные хранятся в страницах кэша в памяти и периодически сбрасываются на винт пакетом, что уменьшает кол-во операций ввода-вывода. Диспетчер кэша примерно раз в секунду сбрасывает 1/8 измененных страниц (если изменения накапливаются быстрее, то размер пакета растет). Кэширование в Windows реализовано в IFS и не зависит от конкретной файловой системы, т.е. для FAT и NTFS оно одинаково. Далее, удалить файл, уже удаленный другим потоком, невозможно - попросту получишь ошибку ERROR_FILE_NOT_FOUND. Кэшируются действительно только данные в файлах, но и каталоги IFS представляет как файлы, так что они тоже попадают в кэш. Одна страница кэша Windows, если мне память не изменяет - 256 килобайт, так что в случае отображения в нее части каталога в ней могут пройти сотни изменений до реального сброса ее на винт.

Конечно спор решит тест...
Можешь написать прогу и протестить. Я лично для себя убедился в том, что говорю. Распараллеливание реально помогает даже на одноядерном проце (естественно, до определенного предела), если конечно поток не выполняет чисто вычислительные задачи, без связи с другими подсистемами.

Но стопроцентно - тормозящее звено винт, а не ослабая распаралельность ОС...
Согласен, в данном случае узкое место - винт. Но за счет более интенсивной работы с кэшем (при нескольких потоках) ситуацию можно улучшить.

P.S. Все это не имеет смысла, если отключен кэш. Тогда действительно упремся в производительность винта.
Записан

Прощайте!
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC
rss | wap
Valid XHTML 1.0! Valid CSS!