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)

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

понимаю. такой совет

rm -fr /var/lib/pp5
это больше суток провисело в скрине, и не один файл не удалался.

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

если бы rm -fr /var/lib/pp5 удалил директорию, я бы писал на лор?

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

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

Чувак, не умничай, автор поста зареган тут на пол года раньше меня, знач. про звёздочки уже и сам понимает.

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

понимаю

Нет.

это больше суток провисело в скрине, и не один файл не удалался.

В top'е что в это время было? Не может «висеть» rm больше суток и ничего не делать.

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

зареган тут на пол года раньше меня

Ну через год начнёшь понимать, что это практически ничего не значит

greenman ★★★★★
()
Ответ на: комментарий от Deleted
top - 18:49:33 up  8:37,  3 users,  load average: 4,43, 3,89, 2,91
Tasks: 275 total,   1 running, 274 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1,9 us,  0,7 sy,  0,0 ni, 77,6 id, 19,4 wa,  0,0 hi,  0,5 si,  0,0 st
KiB Mem:   8173860 total,  8017988 used,   155872 free,  2195944 buffers
KiB Swap:        0 total,        0 used,        0 free,  1926248 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                                                                                         
13789 root      20   0 39632  32m  608 D   4,0  0,4   0:22.06 rm                                                                                                                              
13575 www-data  20   0  249m  12m 3828 S   3,0  0,2   0:01.97 php5-fpm                                                                                                                        
11402 mysql     20   0  490m  76m 4652 S   2,6  1,0   4:35.91 mysqld                                                                                                                          
13687 www-data  20   0  250m  13m 4280 S   2,2  0,2   0:03.68 php5-fpm                                                                                                                        
13558 www-data  20   0  250m  12m 3544 S   2,0  0,2   0:02.01 php5-fpm                                                                                                                        
13571 www-data  20   0  249m  12m 4052 S   0,8  0,2   0:01.98 php5-fpm                                                                                                                        
13660 www-data  20   0  255m  14m 4780 S   0,8  0,2   0:01.63 php5-fpm                                                                                                                        
13682 www-data  20   0  251m  13m 4276 S   0,8  0,2   0:02.26 php5-fpm                                                                                                                        
13690 www-data  20   0  251m  13m 4020 S   0,8  0,2   0:01.92 php5-fpm                                                                                                                        
13639 www-data  20   0  251m  13m 4276 S   0,6  0,2   0:02.23 php5-fpm                                                                                                                        
13681 www-data  20   0  250m  13m 3772 S   0,6  0,2   0:01.78 php5-fpm                                                                                                                        
13688 www-data  20   0  249m  12m 4268 S   0,6  0,2   0:02.26 php5-fpm                                                                                                                        
13692 www-data  20   0  250m  13m 4268 S   0,6  0,2   0:01.77 php5-fpm                                                                                                                        
   46 root      20   0     0    0    0 S   0,4  0,0   0:33.70 kswapd0                                                                                                                         
 2090 root      20   0     0    0    0 D   0,4  0,0   0:01.52 flush-8:0                                                                                                                       
13573 www-data  20   0  251m  14m 4332 S   0,4  0,2   0:01.94 php5-fpm                                                                                                                        
13579 www-data  20   0  249m  12m 4264 S   0,4  0,2   0:01.63 php5-fpm                                                                                                                        
13689 www-data  20   0  249m  11m 3776 S   0,4  0,1   0:01.76 php5-fpm                                                                                                                        
13691 www-data  20   0  249m  12m 3780 S   0,4  0,2   0:01.62 php5-fpm                                                                                                                        
  227 root      20   0     0    0    0 S   0,2  0,0   0:04.73 jbd2/sda1-8            
ipo
() автор топика
Ответ на: комментарий от ipo

Окай, убедил. Теперь попробуй find.

Deleted
()

Присоединяюсь к совету с find.

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

ls -1f | xargs rm

и/или

find... -delete

не может не работать

sdio ★★★★★
()

когда rm -rf у меня вылетал с ошибкой о слишком большом количестве аргументов, то пришлось поставить mc и через него директория целиком удалилась без ошибок и лишних вопросов )

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

точно не хочу, это веб сервер.

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

А что тут спрашивать? Такие проблемы встречаются только с семейством ext*. На reiserfs и xfs относительно быстро удаляются папки с десятками а то и сотнями тысяч php-шных сессий.

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

> P.S. rm -rf свалится с ошибкой «Слишком много аргументов».

Не свалится, один аргумент это не много.

любители звёздочек похоже не всегда знают как работает звёздочка :-) .. (это я про сообщение от ivn86)

забавно :)

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

когда rm -rf у меня вылетал с ошибкой о слишком большом количестве аргументов, то пришлось поставить mc и через него директория целиком удалилась без ошибок и лишних вопросов )

ещё один любитель звёздочек :-)

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

у ТСа вместо ФС ext

Ты сам понял что написал? :)

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

На reiserfs

На reiserfs 3.5/3.6 всё печально станет, когда число файлов до миллиона дойдёт, ибо директории всегда держатся строго сортированными и при изменениях перезаписываются. Там O(N^2).

Trust me, I'm an engineer!

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от iron

Cтопудово только ext остаётся. btrfs/zfs/другое принципиально невозможны, ext2 и ext4 одна сатана, опций монтирования не существует, фрагментация умерла вместе с fat, ssd не изобрели(привет fstrim!)

disarmer ★★★
()
Ответ на: комментарий от i-rinat

Trust me, I'm an engineer!

Я trust-ю только собственному опыту, который напомнил мне какой мрак возникает с большим количеством мелких файлов и высоком I/O на ext{3,4}. По сравнению с этим мраком, reiserfs кажется панацеей. Хоть и не идеален по дизайну, согласен.

iron ★★★★★
()

где то 300 Гиг php сессий накопилось за 3 часа где то 30 гиг

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

Удаление с помощью rm и с помощью find - это два совсем разных удаления (Ни хера себе предложение построил). Попробуй именно find'ом, если rm не отработает.

anonymous
()

В общем, попробуй скомпилить на си такую программу:

# include <stdio.h>
# include <sys/types.h>
# include <dirent.h>

int
main (void)
{
	DIR *dp;
	struct dirent *ep;

	dp = opendir ("./");
	if (dp != NULL)
	{
		while (ep = readdir (dp))
		{
			// Раскомпентируй, если нужено  знать в аутпуте, какой файл удалило
			//printf("deleting %s\n",ep->d_name);
			remove(ep->d_name);
		}
		(void) closedir (dp);
	}
	else
		perror ("Couldn't open the directory");

	return 0;
}
Скопируй бинарник в директорию, в которой надо все удалить и запусти его. Я попробовал создать 40к пустых файлов, оно удалило за пол секунды.

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

да и шифрованием и raid там не пахнет, а libastral подсказывает мне что там ext3/4 со стандартными опциями, но тут так много вариантов уже обсудили без подробностей =) и со звёздочкой, и без

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

ну-ка покажи с strace чем они такие разные

anonymous
()
Ответ на: комментарий от dk-

/возможно не в тему/
Кто там что про нтфс говорил?

Совсем не в тему.
ntfs такое уже на >20-40k выдает. До 1М в папке оно не доживет.
Это как со 12309, когда у линя оно, мс уже давно сдохло.

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

Да я вот что-то не припомню проблем. Хотя использовал xfs раньше, потом перешёл на ext4. Последним пользуюсь вот уже последние 5-7 лет.

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

си, скомпилить. Звчем? Там уже выше perl принесли, который в теже системные вызовы выльется. Со всем уважением к си.

Я попробовал создать 40к пустых файлов, оно удалило за пол секунды.

Мальчик упал со второго этажа и сломал ногу. Сколько ног он сломает, упав с восьмого этажа?

Проблема в том, что тут нелинейная сложность(по крайней мере в реализации мейнстримных ФС), и с миллионом файлов можно не дождаться opendir или например readdir. Хотя на самом деле, я считаю, что со свежим ext4 и ядром миллион файлов совсем не проблема, но проверять лень

disarmer ★★★
()

блин запустил на свою голову find и получил

ps -AFl | grep find
0 D root     16774     1  0  80   0 -  3441 -        884   2 22:30 ?        00:00:00 find /var/lib/pp5/ -type f
не убиваемый процесс который грузит диск под 100%

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

где там специалисты которые искали решение в find?

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

Ну я просто предложил решение. Тут, в идеале, конечно, нужно как-то низкоуровнево считывать файлы и удалять. Башем здесь маловероятно что-то выйдет.

nikolnik ★★★
()

1 млн? А в чём проблема? Не раз удалял. Вот пример с 2+млн, правда, на SSD:

http://juick.com/Balancer/2728457

Но и на HDD порядка миллиона удалял, просто дольше. Не десятки секунд, а десятки минут.

Вот ещё 2.6 млн чуть ранее:

http://juick.com/Balancer/2529800

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

Миллион специалистов в треде, а никто ни про ФС не спросил, ни strace

А что, в наш век может быть что-то не ССЗБ-шное кроме ext4, xfs или reiserfs? :)

KRoN73 ★★★★★
()

все что запускаю в директории /var/lib/pp5/ не убивается ни как, только ребут. блин вообще засада... перестал удалять после ребута rm -rf /var/lib/pp5/

ipo
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.