Если на вашем жёстком диске закончилось свободное пространство, самый простой способ его освободить - найти и удалить самые большие и при этом ненужные файлы. Такая задача может возникнуть как на сервере, так и на домашнем компьютере, поэтому существуют удобные решения для обоих ситуаций. Способов поиска больших файлов существует очень много.
Как вы уже поняли, в этой небольшой инструкции мы рассмотрим, как найти большие файлы Linux с помощью графического интерфейса или консольных утилит. Будем двигаться от самого простого к более сложному.
Содержание статьи
Поиск больших файлов Linux
1. GDMap
Несмотря на то, что графических утилит есть около десятка, все они мне не очень нравятся. Например в Gnome можно использовать GDMap, а в KDE - fileslight. Обе утилиты сканируют файловую систему и выводят все файлы в виде диаграммы. Размер блока зависит от размера файла. Чем больше файл или папка, тем больше блок. Для установки GDMap в Ubuntu выполните:
sudo apt install gdmap
Затем запустите утилиту из главного меню. По умолчанию она отображает домашнюю папку. Здесь можно оценить, какие файлы самые увесистые.
2. Утилита ncdu
Это псевдографическая утилита, которая работает в терминале Linux. Она отображает список файлов и директорий по объёму и, что самое интересное, тут же позволяет удалять ненужные файлы. Для установки утилиты выполните:
sudo apt install ncdu
Затем запустите утилиту, передав ей в качестве параметра папку, которую надо просканировать. Можно проверить ту же домашнюю папку:
ncdu /home
У утилиты очень простое управление. Для перемещения по списку используйте кнопки со стрелками вверх и вниз, для открытия папки - клавишу Enter, а для удаления файла - кнопку d. Также можно использовать для перемещения кнопки в Vim стиле - h, j, k, l.
3. Утилита du
Если у вас нет возможности устанавливать новые утилиты, может помочь установленная по умолчанию во всех дистрибутивах утилита du. С помощью следующей команды вы можете вывести 20 самых больших файлов и папок в нужной папке, для примера снова возьмём домашнюю папку:
sudo du -a /home/ | sort -n -r | head -n 20
Мы не можем использовать опцию -h для вывода размера в читабельном формате, потому что тогда не будет работать сортировка.
4. Утилита find
С помощью команды find вы тоже можете искать большие файлы Linux. Для этого используйте опцию -size. Например, давайте найдём файлы, которые больше 500 мегабайтов в той же домашней папке:
sudo find /home -xdev -type f -size +500M
Можно пойти ещё дальше - вывести размер этих файлов и отсортировать их по размеру:
find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh
Самые большие файлы Linux будут сверху, а более мелкие - ниже.
Выводы
В этой небольшой статье мы разобрались, как выполняется поиск больших файлов Linux. После того, как вы их нашли, остаётся выбрать ненужные и удалить, если подобное происходит на сервере, то, обычно, это логи различных сервисов или кэш. Обратите внимание, что после удаления файлов место в файловой системе может и не освободится. Для полного освобождения места следует перезагрузить компьютер. Это довольно частая проблема на серверах и VPS.
А есть еще встроенный в Манджаро Filelight https://utils.kde.org/projects/filelight
На мой взгляд один из лучших визуализаторов пожранного места на харде.
У меня в Убунте на Гноме из коробки Disk Usage Analyzer. В терминале он отзывается на baobab.
Ещё, у меня буквально на днях закончилось место на диске - 0 байт. Я, сдуру, перезагрузил убунту (думал он почистит временные файлы все) - а он даже не смог загрузиться. С помощью загрузочной флешки искал проблему. Оказалось, нельзя удалять файлы в файловом менежрере запущенном от sudo (sudo nautilus). А я время от времени так системные логи чистил.
Ещё образы докера разрослись до неприличных размеров. В итоге 10 гигов очистил в тот день.