быстрое удаление дерева каталогов Linux

rm -rf mydir

является крайне медленным для дерева каталогов с 100 000 файлов (в подкаталогах) в reiserfs файловой системе.

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

6
задан 15.09.2009, 19:11

3 ответа

Единственное решение, о котором я могу думать, состоит в том, чтобы иметь все Ваши файлы в отдельной файловой системе. Файловая система может жить на разделе диска или в файле.

Вместо того, чтобы удалить файлы Вы могли вытереть раздел или удалить файл.

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

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

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

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

files = os.listdir('.')
for f in files:
  try: os.unlink(f)
  except Exception, e: print e
2
ответ дан 07.12.2019, 16:06

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

1
ответ дан 07.12.2019, 16:06

Теги

Похожие вопросы