Как быстро удалить огромное количество файлов в каталоге на Linux/FreeBSD ?

Не редко у администраторов возникает задача быстрого удаления огромного количества файлов на Linux или FreeBSD. И как правило все используют классический способ с использованием rm -rf /directory/, но когда в каталоге 900 тыс. файлов, то удаление такого каталога с помощью rm может растянуться на долгие часы.

Более быстрый способ удаления — это синхронизация удаляемого каталога с пустым через rsync.
Суть простая — нужно rsync-ом положить пустой каталог в тот, который нужно очистить, с опцией -delete.

Итак, создаём пустой каталог:

mkdir /tmp/empty

Если у нас всё плохо и на диске создать каталог уже нельзя (закончилось место или inode), то нас всегда спасёт /dev/shm (на Linux):

mkdir /dev/shm/empty

Назначаем на каталог /tmp/empty те же права, которые сейчас у нас на том каталоге, который мы собираемся чистить (иначе каталог станет принадлежать root и туда никто потом не сможет писать), например:

chown www-data:www-data /tmp/empty
chmod 755 /tmp/empty

Начинаем всё удалять:

rsync -a --delete /tmp/empty/ /path/to/big/dir/

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


Оставить комментарий

avatar
1000

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Подписаться  
Уведомление о