Вопрос Что такое способ командной строки для поиска больших файлов / каталогов для удаления и освобождения пространства?


Ищете серию команд, которые покажут мне самые большие файлы на диске.


158
2018-04-20 14:01


происхождения


Будет ли что-то графическое в порядке? - RolandiXor♦
нет, работает в командной строке поверх ssh. - Ryan Detzel
Что странно, у меня два сервера, которые работают одинаково. Один из них имеет 50% дискового пространства, а другой - 99%. Я не могу найти причину этого. - Ryan Detzel
Поэтому я смущен, это говорит, что 98% используется с du, но когда я запускаю приложение gt5, я получаю: grab.by/9Vv2 - Ryan Detzel


ответы:


Если вам просто нужно найти большие файлы, вы можете использовать find с -size вариант. Следующая команда перечислит все файлы размером более 10 Мбайт (не путать с 10 МБ):

find / -size +10M -ls

Если вы хотите найти файлы между определенным размером, вы можете объединить их с «размером ниже, чем». Следующая команда находит файлы между 10MiB и 12MiB:

find / -size +10M -size -12M -ls

apt-cache search 'disk usage' перечисляет некоторые программы, доступные для анализа использования диска. Одно приложение, которое выглядит очень перспективным, - это gt5,

Из описания пакета:

Прошли годы, и диски стали все больше и больше, но даже в эту невероятно большую эпоху харддиска пространство со временем исчезает. Эти небольшие и эффективные программы предоставляют более удобный список, чем по умолчанию du (1). Он отображает то, что произошло с момента последнего запуска, и отображает размер dir и общий процент. Можно перемещаться и перемещаться по каталогам с помощью клавиш курсора с текстовым браузером (ссылки, ссылки, lynx и т. Д.).

Screenshot of gt5

В разделе «Связанные пакеты» gt5, Я нашел ncdu, Из описания пакета:

Ncdu - это средство просмотра на основе ncurses. Он обеспечивает быстрый и простой в использовании интерфейс благодаря известной утилите du. Он позволяет просматривать каталоги и показывать проценты использования диска с помощью библиотеки ncurses.

Screenshot of ncdu


223
2018-04-20 14:16



ncdu очень быстро и только то, что мне нужно, спасибо! Я тоже пробовал gt5, но просто отменил его, потому что он «думал» слишком долго без какой-либо обратной связи - Lukas
Святое дерьмо, нкду удивительно, спасибо, что поделились своими открытиями! - While-E
Мне бы хотелось, если бы ncdu был отмечен сильнее. Мне нужно это время от времени, и я не могу вспомнить имя. - Martin Thoma


Я просто использую комбинацию du а также sort,

sudo du -sx /* 2>/dev/null | sort -n

0   /cdrom
0   /initrd.img
0   /lib64
0   /proc
0   /sys
0   /vmlinuz
4   /lost+found
4   /mnt
4   /nonexistent
4   /selinux
8   /export
36  /media
56  /scratchbox
200 /srv
804 /dev
4884    /root
8052    /bin
8600    /tmp
9136    /sbin
11888   /lib32
23100   /etc
66480   /boot
501072  /web
514516  /lib
984492  /opt
3503984 /var
7956192 /usr
74235656    /home

Тогда это случай промыть и повторить, Задайте подкаталоги, которые считаете слишком большими, запустите команду для них, и вы узнаете, что вызывает проблему.

Примечание: я использую du«s -x чтобы держать вещи ограниченными для одной файловой системы (у меня довольно сложное расположение кросс-монтируемых вещей между SSD и RAID5).

Заметка 2: 2>/dev/null перенаправляет любые сообщения об ошибках в забвение. Если они вас не беспокоят, это не обязательно.


29
2018-04-20 14:30



Когда я запускаю эту команду, происходит спуск в дочерние каталоги. Из du man page: «Суммируйте использование диска каждого FILE, рекурсивно для каталогов». - Jamie


Мое любимое решение использует смесь из нескольких хороших ответов.

du -aBM 2>/dev/null | sort -nr | head -n 50 | more

du аргументы:

  • -a для «всех» файлов и каталогов. Оставьте это для просто каталогов
  • -BM для вывода размеров в мегабайтах (M) размеров блоков (B)
  • 2>/dev/null - исключить сообщения об ошибках с разрешениями (спасибо @Oli)

sort аргументы:

  • -n для "числовых"
  • -r для «обратного» (от самого большого к наименьшему)

head аргументы:

  • -n 50 для всего лишь 50 результатов.
  • Оставить more если использовать меньшее число

Примечание. Префикс с sudo включить каталоги, в которых ваша учетная запись не имеет доступа к доступу.

Пример, показывающий 10 самых больших файлов и каталогов в / var (включая общую сумму).

cd /var
sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M   .
6794M   ./lib
5902M   ./lib/mysql
3987M   ./lib/mysql/my_database_dir
1825M   ./lib/mysql/my_database_dir/a_big_table.ibd
997M    ./lib/mysql/my_database_dir/another_big_table.ibd
657M    ./log
629M    ./log/apache2
587M    ./log/apache2/ssl_access.log
273M    ./cache

16
2017-07-03 23:24



люблю его, спасибо - electblake


Ответ qbi правильный, но он будет очень медленным, когда будет много файлов, так как он начнет новый ls-процесс для каждого элемента.

гораздо более быстрая версия, использующая поиск без появления дочерних процессов, будет использовать printf для печати размера в байтах (% s) и пути (% p)

find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries


8
2017-11-16 12:55



Подтвердите, что это намного быстрее - Cookie


Чтобы отобразить самые большие 20 каталогов (рекурсивно) в текущей папке, используйте следующий однострочный:

du -ah . | sort -rh | head -20

или (более ориентированный на Unix):

du -a . | sort -rn | head -20

Для топ-20 самых больших файлов в текущем каталоге (рекурсивно):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

или с человекочитаемыми размерами:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

Обратите внимание, что -h доступно для GNU sort только для того, чтобы правильно работать с OSX / BSD, вы должны установить его из coreutils, Затем добавьте свою папку в свой PATH,

Таким образом, эти псевдонимы полезны для вашего гс файлов (каждый раз, когда это необходимо):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

7
2018-03-05 14:17





Это похоже на идеальное приложение для find:

find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5

Эта команда найдет все файлы в каталоге $DIRECTORY и выполнить ls -s на них. Последняя команда печатает выделенный размер файла плюс имя файла. Результат сортируется численно и отображаются последние пять записей. Таким образом, вы увидите самые большие 5 файлов в $DIRETORY или любой подкаталог. Если вы введете tail -n 1 вы увидите только самый большой файл.

Кроме того, вы можете много поиграть с find, Например, вы можете искать файлы, которые моложе N дней (-ctime -n) или которые принадлежат специальным пользователям (-user johndoe).


6
2018-04-20 14:26





Когда мне нужно сделать больше свободного места на серверах, я использую эту команду. Он найдет все файлы размером более 50 МБ, а «du -h» составит лучший список файлов и «sort -n» после того, как список make make numericcaly отсортирован по размеру файла.

find / -size +50M -type f -exec du -h {} \; | sort -n

2
2017-10-11 20:40





Попробуйте Baobab, он дает вам графический обзор файлов и папок, вы можете увидеть, где находятся настоящие космические свиньи и удалить их одним щелчком мыши https://help.ubuntu.com/community/Baobab


1
2018-01-29 11:47



В этом конкретном вопросе OP предпочитает метод командной строки. См. Комментарии к вопросу. Я также отредактирую этот вопрос.