Как быстро удалить сотни тысяч файлов?

Возможный дубликат:
Выполнение rm -rf в массивном дереве каталогов занимает часы

Я запускаю программу моделирования на вычислительном кластере (Scientific Linux), который генерирует сотни тысяч файлов атомных координат. Но у меня проблема с удалением файлов, потому что rm -rf никогда не завершается и не выполняет

find . -name * | xargs r

Разве нет способа просто отсоединить этот каталог от дерева каталогов? Единица хранения используется сотнями других людей, поэтому переформатирование не вариант.

Спасибо

4 ответа

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

Если возможно, создайте все эти файлы и только эти файлы в отдельном разделе или на диске. Когда пришло время удалить их, размонтируйте раздел и отформатируйте его. Формат EXT4 (не EXT2) занимает всего несколько секунд.

Убедитесь, что вы не сохраняете информацию / отчет / и т. Д. В том же месте.

Вы можете смонтировать новый раздел или новый диск в исходное местоположение либо напрямую, либо с помощью опции -o bind.

Способ 2

Немного подумав, вместо отдельного файла, поместите все эти данные в таблицу базы данных. Затем бросьте всю таблицу после использования.

Я обычно использую что-то вроде:

find ./directoryname -type f -name '*file-pattern*' -exec rm {} +

Также можно использовать -delete флаг к find команда.

find ./directoryname -type f -name '*file-pattern*' -delete

Является ли создание этих файлов проблемой / ошибкой? Есть ли на уровне приложений что-нибудь, что может помочь?

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

find . -type d -o -type f -print0 | xargs -0 rm -rf --

Было бы просто удалить связь с каталогом, если вы не возражаете не вернуть свободное место, а все файлы снова появляются в /lost+found на следующем fsck,

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

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

Другие вопросы по тегам