На днях я запустил bleachbit в своей системе. Я включил в нем опцию очистки дискового пространства. Это заняло несколько часов, и мое дисковое пространство полностью заполнилось (около 100 ГБ). После бесконечного ожидания я решил завершить программу и удалить файлы вручную.
Теперь проблема: я не могу удалить файлы или каталог. Я не могу выполнить команду ls в каталоге. Я пробовал rsync -a --delete, wipe, rm, различные комбинации find & rm и т. Д.
Я выполнил приведенные здесь инструкции и заметил сообщение «Directory Index Full!» ошибка в моих журналах. rm в каталоге с миллионами файлов
Я заметил, что команда stat вернула необычно большой размер каталога, превышающий 1 ГБ. Обычно это всего 4096 или что-то около десятков тысяч.
nameh@labs ~ % stat kGcdTIJ1H1
File: ‘kGcdTIJ1H1’
Size: 1065287680 Blocks: 2080744 IO Block: 4096 directory
Device: 24h/36d Inode: 9969665 Links: 2
Access: (0777/drwxrwxrwx) Uid: ( 1000/ nameh) Gid: ( 1000/ nameh)
Access: 2014-10-31 07:43:08.848104623 +0530
Modify: 2014-10-31 07:43:19.727719839 +0530
Change: 2014-10-31 07:43:19.727719839 +0530
Birth: -
Команда "ONLY", которая пока что может удалять файлы в этом каталоге, - это команда srm (инструментарий безопасного удаления от THC). Все остальные команды не работают. srm работает уже 20 часов и на данный момент освободил около 1,1 ГБ. Он работает в наименее безопасном режиме.
sudo srm -v -rfll kGcdTIJ1H1
Идеи?
edit: Мой вопрос: «как мне быстро удалить каталог?». Примерно за несколько часов или около того, не тратя несколько дней на удаление файлов. rm -rf ничего не делает.
вы можете использовать этот трюк с Perl:
perl -e 'chdir "/path/to/dir" or die; opendir D, "."; while ($n = readdir D) { unlink $n }'
что он делает, это сначала идет в каталог, открывает его и удаляет (отсоединяет) все файлы в нем, не получая сначала список всех файлов (это, вероятно, было тем, что rm задыхается).
Уловка не моя, а Рэндала Л. Шварца: http://blogs.perl.org/users/randal_l_schwartz/2011/03/perl-to-the-rescue-case-study-of-deleting-a-large-directory.html
У меня была аналогичная проблема, когда один из разделов был заполнен миллионами файлов и, следовательно, потреблял все доступные inodes, тогда, хотя в файловой системе было почти 20 ГБ свободного места, я не смог создать на нем какой-либо файл, потому что inodes были исчерпаны.
Итак, я запустил команду find, которая удалила 1,4 миллиона файлов. Это заняло довольно много времени, хотя с помощью find и exec combo find будет передавать каждый файл функции exec, которая, в свою очередь, запускает команду rm для файла
cd / в / каталог найти. -type f -exec rm {} \;
ИЛИ
Вы можете попробовать xargs
найти . -тип f | xargs rm
Обе команды работали у меня
Надеюсь, поможет.
вы можете попробовать следующее
найти . -type d -print -delete # отбросьте -print, чтобы не видеть, что вы удаляете, я считаю, что это самый ужасный
найти . -type f -exec rm {} \; # медленнее, чем выше
найти . -mtime +29 -print | xargs ls -d