Как быстро удалить сотни тысяч файлов?
Возможный дубликат:
Выполнение 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
, который в любом случае лучше разработан для хранения временных файлов и сократит время восстановления файловой системы.