Возможный дубликат:
Выполнение rm -rf в массивном дереве каталогов занимает часы
Я запускаю программу моделирования на вычислительном кластере (Scientific Linux), которая генерирует сотни тысяч файлов атомных координат. Но у меня проблема с удалением файлов, потому что rm -rf никогда не завершается и тоже
find . -name * | xargs r
Нет ли способа просто отсоединить этот каталог от дерева каталогов? Единица хранения используется сотнями других людей, поэтому переформатирование невозможно.
Спасибо
Способ 1 Предполагая, что этот файл предназначен для создания, его нужно просто удалить после использования.
Если возможно, имейте все эти файлы, и только эти файлы, создать в автономном разделе или на диске. Когда пришло время их удалить, размонтируйте раздел и отформатируйте его. EXT4 (не EXT2) формат занимает всего несколько секунд.
Убедитесь, что вы не сохраняете информацию / отчет и т. Д. В том же месте.
Вы можете смонтировать новый раздел или новый диск в исходное расположение либо напрямую, либо с помощью -o привязать вариант.
Способ 2
Подумав немного нестандартно, вместо отдельного файла поместите все эти данные в таблицу базы данных. Затем бросьте всю таблицу после использования.
Я предполагаю, что вы столкнулись со странным типом файла, который не позволяет rm завершить работу. Попробуйте что-нибудь вроде
find . -type d -o -type f -print0 | xargs -0 rm -rf --
Просто отменить связь с каталогом было бы вполне возможно, если бы вы не возражали, чтобы не вернуть свободное пространство, а все файлы снова появятся в /lost+found
в следующий fsck
.
Удаление файлов - это не бит времени, это весь код обслуживания файловой системы, который убирается за кулисами, что отнимает много времени, а создание миллионов небольших файлов занимает очень много времени. Это займет еще больше времени, если они находятся в плоской широкой файловой структуре, а не в глубокой и тонкой (то есть много файлов в нескольких каталогах вместо многих файлов во вложенных каталогах). Как вы заметили, в некоторых случаях это может занять больше времени, чем просто воссоздать файловую систему.
Если бы это была моя проблема, я бы создал специальный раздел для хранения этих файлов, и, кроме того, я бы, вероятно, использовал tmpfs
, который в любом случае лучше предназначен для хранения временных файлов и сократит время повторного создания файловой системы.
Обычно я использую что-то вроде:
find ./directoryname -type f -name '*file-pattern*' -exec rm {} +
Также можно использовать -delete
флаг к find
команда.
find ./directoryname -type f -name '*file-pattern*' -delete
Является ли создание этих файлов проблемой / ошибкой? Может ли что-нибудь помочь на уровне приложения?