Как удалить очень глубокое дерево каталогов?

12
Александр Фролов
На сайте с 27.12.2007
Offline
155
1342

Программа зациклила рекурсию и создала огромное и развесистое дерево каталогов (FreeBSD).

Попытки удаления через MC или командой rm -R приводят к зависанию и к необходимости перезагружать сервер с помощью KVM.

Попытки удаления путем ручного захода в дерево так же не удались, т.к. не удается дойти до дна: MC и панель ISP Manager в конце концов пишет про невозможность получения информации о файле и показывает очень длинный путь к папке. Наверное, дерево слишком глубокое.

Подскажите, пожалуйста, как мне удалить это дерево?

Опасаюсь, что оно создаст проблемы при резервном копировании файлов пользователя средствами панели ISPManager.

Заранее спасибо за любую помощь!

Andreyka
На сайте с 19.02.2005
Offline
822
#1

Версию фри укажите

Не стоит плодить сущности без необходимости
Александр Фролов
На сайте с 27.12.2007
Offline
155
#2

7.4-RELEASE FreeBSD 7.4-RELEASE #0: amd64

M
На сайте с 01.12.2009
Offline
235
#3

Сначала надо увидит текущею нагрузку, потом df -i df -h.

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

Администратор Linux,Freebsd. построения крупных проектов.
Александр Фролов
На сайте с 27.12.2007
Offline
155
#4

last pid: 14557;  load averages:  0.06,  0.20,  0.24                                                 up 0+02:15:52  18:13:48
113 processes: 1 running, 112 sleeping
CPU: 0.0% user, 0.0% nice, 0.4% system, 0.1% interrupt, 99.5% idle
Mem: 367M Active, 39G Inact, 5245M Wired, 34M Cache, 4917M Buf, 1571M Free
Swap: 4096M Total, 4096M Free

df -i
Filesystem 1K-blocks Used Avail Capacity iused ifree %iused Mounted on
/dev/mfid0s1a 563035902 383372990 134620040 74% 1620988 71178242 2% /
devfs 1 1 0 100% 0 0 100% /dev

df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mfid0s1a 537G 366G 128G 74% /
devfs 1.0K 1.0K 0B 100% /dev

А в другое место это как?

Я могу вынести это дерево папок из /home/<имя пользователя>, например, в /bad_folder/, сменив владельца, и либо забыть про это дерево, либо стирать его, предварительно подключив KVM?

M
На сайте с 01.12.2009
Offline
235
#5

Ага и можно использовать при удалении nice раз так проблематично.

Александр Фролов
На сайте с 27.12.2007
Offline
155
#6

Спасибо! Завтра попробую, особенно nice интересно, пусть себе потихоньку работает...

M
На сайте с 16.09.2009
Offline
278
#7
Александр Фролов:
Программа зациклила рекурсию и создала огромное и развесистое дерево каталогов (FreeBSD).
Попытки удаления через MC или командой rm -R приводят к зависанию и к необходимости перезагружать сервер с помощью KVM.

Если каталоги пусты, то:

find path/to/ -type d -empty -print0 | xargs -0 -L 20 rmdir

- удалит пустые листья. Запустить из под nice несколько раз.

Другие полезные ключи find: -maxdepth/-mindepth. Позволят вам выделить директории N-го уровня вложенности и скормить их rm -R через xargs, аналогично примеру выше. Применять с осторожностью (man: find, nice, xargs, rm, rmdir), беречь от детей!

Но думаю что простого rm -R, запущенного из под nice - должно хватить в вашем случае.

Александр Фролов:
Опасаюсь, что оно создаст проблемы при резервном копировании файлов пользователя средствами панели ISPManager.

Там что, до сих пор нет возможности исключить каталог из бекапа? 0_0 Если мне не изменяет память - есть.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
Александр Фролов
На сайте с 27.12.2007
Offline
155
#8

Проблему решил!

Большое спасибо всем, кто откликнулся!

Вначале я перенес огромное дерево в отдельный каталог корня, а потом растащил его на менее грандиозные ветви командой MV. Затем я просто удалил эти ветви тем же MC. На все ушло около часа.

N
На сайте с 06.05.2007
Offline
419
#9

что тут нужно было удалить, так это mc. источник всех ваших проблем.

Кнопка вызова админа ()
Александр Фролов
На сайте с 27.12.2007
Offline
155
#10
netwind:
что тут нужно было удалить, так это mc. источник всех ваших проблем.

Источник проблемы в данном конкретном случае - ошибка программистов. Сервер подвис, когда я попытался удалить все дерево каталогов командой rm -R.

MC я пользуюсь, когда это удобнее, чем командная строка. В данном случае мне было бы очень трудно заходить из командной строки в каждую папку и смотреть ее содержимое.

А какие проблемы могут возникнуть при использовании MC?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий