6
rm -rf mydir

мучительно медленно для дерева каталогов с 100000 файлов (в подкаталогах) в файловой системе reiserfs.

Есть идеи по более быстрому удалению деревьев каталогов (даже риску редкого повреждения)?

3 ответа3

4

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

Вместо удаления файлов вы можете стереть раздел или удалить файл.

Я могу посочувствовать вам, потому что у меня есть проект с> 200 000 файлов в NTFS, и удаление дерева действительно является проблемой. Если бы я мог, я бы

  • использовать другую файловую систему (в любом случае reiserfs довольно хорош со многими файлами IIRC)
  • Избегайте большого количества файлов (например, используйте базу данных)
2

Это почти всегда плохая идея иметь миллионы файлов в каталоге. Но это происходит со мной все время. Старые файловые системы стали непригодными для использования, потому что в числе файлов delete было O(n). Я не думаю, что любая текущая файловая система Linux так плоха. (Не совсем позитивно в отношении ReiserFS, но я бы удивился, если бы это было так). Но даже при хорошей файловой системе инструменты оболочки делают слишком много работы при удалении файлов. Они устанавливают файлы, явно тестируют разрешения, создают большие командные строки и т.д.

Одним из обходных путей является удаление на очень низком уровне, просто вызов системного вызова unlink(). Вот какой-то быстрый и грязный Python, который позволил мне удалить миллион файлов, когда мне не удалось запустить rm:

files = os.listdir('.')
for f in files:
  try: os.unlink(f)
  except Exception, e: print e
1

XFS удаляет намного быстрее. ext {2,3,4} худшие, я не знаю, где между ними находится reiserfs.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .