LINUX.ORG.RU
ФорумAdmin

Как удалить директорию в которой больше 1КК файлов?

 


3

9

вывод команды

ls -lah
drwxr-xr-x  2 postfix   postfix  4,0K Дек  1  2012 postfix
drwxrwxrwx  2 root      root    1016M Янв  6 16:45 pp5
drwxr-xr-x  2 root      root     4,0K Мар 31  2014 pycentral

перепробовал кучу способов http://serverfault.com/questions/183821/rm-on-a-directory-with-millions-of-files

http://superuser.com/questions/680119/deleting-millions-of-files

http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux

и не чего не помогает, более 24 часов уже не могу удалить хоть один файл из директории pp5 Может у кого то есть опыт? mkfs не предлагать...



Последнее исправление: cetjs2 (всего исправлений: 2)

ЛОЛ. Тебе не помогают советы с superuser и serverfault и ты пришёл на ЛОР.

Подписался.

Deleted
()

А составить список и удалять по одному? Что значит, что не могу удалить хоть один файл? Я не понимаю.

Infra_HDC ★★★★★
()
Ответ на: комментарий от Infra_HDC

в директории pp5 не чего не работает, ни список составить ни чего, ls висел 4 часа и строчки не вывел.

ipo
() автор топика
Ответ на: комментарий от Infra_HDC

ls приходится убивать через kill -9

ipo
() автор топика
Ответ на: комментарий от ipo

Попробуйте выключить сортировку: ls -f.

AITap ★★★★★
()
perl -E 'opendir DH, $a=shift or die $!; /^\.\.?$/ or (unlink "$a/$_" and warn "$a/$_ deleted") or die "$a/$_: $!" while defined($_=readdir DH)' /path/to/dir
Olegymous ★★★
()
Ответ на: комментарий от Eddy_Em

интересно, какой смысле это писать «блин, ну япона ж мать!»?

ipo
() автор топика

mkfs не предлагать...

Но оно самое то. У меня тоже такая же папочка желит c 10M пустых файлов на ext3 :) Postgres временных файлов понасоздавал.

AFAIU тормозить начинает реализация файловой системы (операции с директориями). Пробовал fsck -D — помогает ненадолго. После нескольких удалений листинг опять колом встает. Запуск rm -Rf c ionice уровня idle не помогает: все-равно вешается весь ввод-вывод на серваке.

Тормозит только rm -Rf на этой самой директории. Переименовал ее, для postgres'а сделал новую, жду удобного случай сделать mkfs.

ival ★★
()

habrahabr.ru/post/157613/
Читал давно, насколько помню, лучший результат был через find

Да сейчас плохо помню подробности и могу наврать с количеством. Как-то приходилось удалять директорию рекурсивно с 2,5млн мелких файлов 2,5млн мелких файлов, значит все-таки чуть меньше. Это был единственный раз когда у меня закончились иноды на ext4 или ext3, с тех я не очень как-то люблю ext*. Я грезил безумной идеей сделать из каждой строки с названием и magnent ccылки html страницы, и конечно тогда я это сделал. Ну и конечно второй частью плана было проиндексировать все это хитро в гугле, и сделать своего рода небольшой эксперимент. Но к сожалению в ту пору стало уже становится как-то не спокойно с торрентами, и после того как гугл проиндексировал порядка тысяч сорока страниц, я испугался и удалял это все это добрых 4 дня. Да еще заметил что стал внезапно попадать в блеклисты, это тоже меня тогда остановило. Трезвый рассудок победил.

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 2)

в общем ответ только через mkfs.

ipo
() автор топика

Что за фс и шедуллер? На etx4 таких проблемы не замечал, сносил каталоги и с большим количеством файлов (тупо по rm -rf)

invokercd ★★★★
()
Ответ на: комментарий от Klymedy

Перл, как всегда, выглядит как призыв к самоубийству.

Но здесь не призыв к самоубийству, а принуждение с угрозой физической расправы.

aplay ★★★★★
()

хм. технически на чём может греть вселенyую ls при большом каталоге (тут нырок в сырцы) ....

имхо

1. получаем физический(т.е как в файловой системе) список имён и их inode. - если ls на этом тормозит то хм «чёнить syscall-уровня потоковое» - т.е прочитала(из ответа оси) очередной элемент выплюнуло имя, i-node в stdout

2. !!!! делаешь достаточное число каталогов в каждый каталог создаёшь копии (порции скажем по 1000 файлов, значит эдак 2-3К каталогов) т.к это дубли операция должна быть быстрой ибо это создание только записей в файловой системе и увеличение счётчика каждого файло.

3. теперь unlink твоя старая директория должна быть «моментальна»(ну миллион декриментов) - если всёж тормоз то наверно используя список из п.1 с конца :)

4. теперь можно по маленько с перерывами на покурить и прочее с низким приоритетом уже удалять по отдельности 2-3К каталогов из п.2.

зы. чисто мозговой штурм - типо разделить места торможения.

qulinxao ★★☆
()
Ответ на: комментарий от Infra_HDC

А разве временным файлам, пусть даже и для Postgres, не место в tmpfs ?

Не знаю. Хотя, в том случае это действительно помогло бы (именно на том серваке в нормальной ситуации временные файлы не создаются, ошибка была из-за кривого запроса)

ival ★★
()
 srm -r /var/lib/pp5/
Warning: Couldn't rename sess_t683p7d3t9lpd3353g0ea7bea7 - No space left on device
Warning: Couldn't rename sess_k53o3ij1rl58vc397k8i0r1166 - No space left on device
Warning: Couldn't rename sess_u0s4s57a1m6ali8k0dc52r80i6 - No space left on device
Warning: Couldn't rename sess_3jp2pvptbn1cb2n8hn19q6us97 - No space left on device
Warning: Couldn't rename sess_8rs4gf021a1ookh738r3nomat3 - No space left on device
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
rootfs             913G         386G  482G           45% /
udev                10M            0   10M            0% /dev
tmpfs              799M         756K  798M            1% /run
/dev/sda1          913G         386G  482G           45% /
tmpfs              5,0M            0  5,0M            0% /run/lock
tmpfs              2,4G            0  2,4G            0% /run/shm
/dev/sdb1          917G         701G  171G           81% /mnt
tmpfs              799M         756K  798M            1% /var/run
tmpfs              512M         109M  404M           22% /tmp
tmpfs              512M            0  512M            0% /var/tmp
tmpfs              5,0M            0  5,0M            0% /var/lock
tmpfs              799M         756K  798M            1% /var/run
tmpfs              5,0M            0  5,0M            0% /var/lock
ipo
() автор топика
Ответ на: комментарий от ivn86
df -i
Файловая система   Iнодов IИспользовано IСвободно IИспользовано% Cмонтировано в
rootfs           60792832      23367410  37425422            39% /
udev              1020241           332   1019909             1% /dev
tmpfs             1021732           259   1021473             1% /run
/dev/sda1        60792832      23367410  37425422            39% /
ipo
() автор топика

с горем пополам как то удаляет один файл в секунду )

srm -rv /var/lib/pp5/
Using /dev/urandom for random input.
Wipe mode is secure (38 special passes)
Wiping /var/lib/pp5/ DIRECTORY (going recursive now)
Wiping sess_vc0nt0iol8ulipnm7ikl7m09c1 **************************************Warning: Couldn't rename sess_vc0nt0iol8ulipnm7ikl7m09c1 - No space left on device
 Removed file sess_vc0nt0iol8ulipnm7ikl7m09c1 ... Done
Wiping sess_q2510ogilhgmvdhp4m1fi3fgm6 ************************************** Removed file sess_q2510ogilhgmvdhp4m1fi3fgm6 ... Done
Wiping sess_op1baf9jscj8lv4l1mqrmamf40 ************************************** Removed file sess_op1baf9jscj8lv4l1mqrmamf40 ... Done
Wiping sess_aqq3okvlevmen7il63a7dse746 ************************************** Removed file sess_aqq3okvlevmen7il63a7dse746 ... Done
Wiping sess_7vclfaucnvhmfipqlu9ggsgc27 **************************************Warning: Couldn't rename sess_7vclfaucnvhmfipqlu9ggsgc27 - No space left on device
 Removed file sess_7vclfaucnvhmfipqlu9ggsgc27 ... Done
Wiping sess_cruamdt6h1vfl2ef7q86on2ca3 ************************************** Removed file sess_cruamdt6h1vfl2ef7q86on2ca3 ... Done
Wiping sess_tcef81l08nn6to5gjhhk9vveg2 **************************************Warning: Couldn't rename sess_tcef81l08nn6to5gjhhk9vveg2 - No space left on device
ipo
() автор топика

Вообще, можно извратиться c помощью Си. Допустим, находить первые n-количество файлов, после чего их удалять. Просто все команды на баше будут считывать все твои КК файлов в виде текста, после чего, передавать по пайпу или что-то еще, тут ты наткнешься на глюки ls или find. В общем, тут придется извратиться.

nikolnik ★★★
()
Ответ на: комментарий от armbox

С -v ключом будет же дольше удаляться. Понятно что тут экстрим ситауция, но «rm -rf *» правда не канает ?

Чувак, ты вообще понимаешь, что именно делает «*» в шелле?

Deleted
()
Ответ на: комментарий от ipo

замени srm на rm и будет быстрее. путь не меняй.

Lavos ★★★★★
()
Ответ на: комментарий от ipo

Откуда ты вообще srm взял?! Ты помнимаешь что он делает и зачем? Нет? Ну тогда какого чёрта используешь его?

Скопипасти вот это в рутовую консоль:

rm -fr /var/lib/pp5
Без звёздочек, автодополнения и прочей самодеятельности.

Deleted
()
Ответ на: комментарий от Deleted

Если по каким-то неведомым причинам rm вообще не хочет работать (я с таким не сталкивался), то есть ешё такой вариант:

find /var/lib/pp5 -type f -delete

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.