BASH: как удалить огромное количество директорий, содержащих директории и файлы?
Собственно, сабж.
Есть абстрактный /data/maindir , содержащий в себе множество поддиректорий, содержащих в себе ещё несколько уровней поддиректорий и на самом нижнем уровне лежат маленькие файлы.
Как максимально быстро выполнять чистку /data/maindir (саму эту директорию удалять не нужно)?
Быстро не получится, увы...
Вариантов несколько, самый первый - переименовать этот каталог и на его месте создать новый с таким же именем и правами.
А уже неторопясь чистить переименованный каталог.
Лучше всего конечно, в эту точку подмонтировать раздел, и в случае чего форматировать.
Если файлов/каталогов в /data/maindir/ , то вылетит с ошибкой out of memory, проходили, знаем. Как то пришлось удалять сессии php из одного такого каталога в десяток миллионов файлов. Удаление заняло 4 дня... был написан специальный скрипт, который вытягивал файлы для удаления пачками.
ну дык разворачивание /* не оптимизировано для поточного выполнения.
автор не уточнял такие параметры.
в таком случае надо использовать find .... -delete
сия програмка просто обходит все файлики и пристреливает, не набирая промежуточных кешей.
~200 тысяч тайликов find проредил мне за час фонового режима. потребление памяти не смотрел, но и лагов не замечал хотя и было всего 2 гига рамы :)