Linux поиск больших файлов

Обновлено: 03.07.2024

Пользователи компьютеров обычно знают, по какой причине у них заканчивается место на диске — скачено слишком много файлов с помощью Torrent, слишком много фотографий накопилось за последние годы, слишком большой видеоархив с последних событий и так далее. Но иногда ситуации не такие тривиальные — место может закончится на системной диске или на удалённом веб-сервере. В этой статье мы рассмотрим способы, которые позволят найти самые большие папки, которые заняли слишком много места на диске.

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

1. ncdu для очистки папок

Программа ncdu является одним из самых удобных вариантов — она просто отлично справляется со своими задачами. У неё Ncurses интерфейс, то есть для обычных пользователей это будет просто очень удобно, а для администраторов, обслуживающих удалённые веб-сервера без графического интерфейса она также подойдёт, поскольку Ncurses не требует графического окружения рабочего стола.

Программа очень интуитивная и проста в использовании, достаточно запустить её:

При этом у программы большое количество возможностей и дополнительных функций и оптимизаций, с которыми вы можете познакомиться в статье «ncdu: графический интерфейс du чтобы быстро узнать, какие файлы и папки израсходовали место на диске».


2. Как с помощью du найти самые большие папки

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

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

Вместо <ДИРЕКТОРИЯ> нужно вписать директорию в системе, например, если мы хотим начать с корневой директории:


Эта команда покажет только папки, размер которых измеряется гигабайтами.

Следующая команда делает нечто похожее, но сортирует папки по возрастанию размера и показывает только 10 самые тяжёлые:

Пример для анализа всей корневой файловой системы:


В этих командах:

  • опция -P говорит не следовать по символическим ссылкам (это может привести к тому, что файлы будут посчитаны дважды)
  • опция -x означает оставаться на одной файловой системе (очень полезно, не будут посчитаны смонтированные диски, а также диски с виртуальной файловой системой)
  • опция -h печатает размер файлов в простом для восприятия человеком формате
  • sudo для повышения привилегий — позволяет команде считать размер всех директорий и не выводить множество ошибок из-за недостатка прав на чтения папок

Чтобы указать корневую директорию, используйте /, чтобы указать текущую директорию, используйте . (точка). В любой из перечисленных выше команд вы можете указывать определённую папку, чтобы начать сбор информации с неё. Например, когда вы нашли папку с большим размером и хотите узнать больше подробностей о ней, укажите её в одной из команд.

3. Как найти большие файлы

Если есть основания думать, что нехватка места на диске заключается в том, что его заняли какие-то большие файлы (например, файлы логов какого-то приложения) а не множество маленьких файлов, то с помощью команды find можно выполнить поиск файлов, размер которого больше определённого, например:

Эта команда найдёт все файлы, размер которых больше 10 мегабайт.

В этой команде вместо / (означает искать начиная с корневой директории) вы можете указать любую другую директорию. А вместо +10M вы можете указать любое значение и другой префикс, например вместо M (мегабайты) указать G (гигабайты).

Поиск больших файлов в Linux

Рассмотрим, как это сделать в Linux с использованием команд find и du .

Поиск больших файлов командой find

Простой поиск

Команда find имеет опцию -size , которая позволяет указать размер файлов для поиска.

Найдем файлы, которые занимают больше 1Gb:

  • Символ точка . после самой команды find, означает, что поиск нужно вести в текущей директории. Вместо точки вы можете указать, например, корневой раздел / или путь до любой другой директории.
  • -mount означает, что в процессе поиска не нужно переходить на другие файловые системы.
  • -type f означает, что мы ищем файлы.
  • -size +1G означает, что нужно найти файлы, размер которых превышает 1Gb. Размер можно указать в различных форматах:
    • b — блоки размером 512 байт. Числом указывается количество блоков.
    • c — в байтах. Например: -size +128с
    • w — в двухбайтовых словах
    • k — в килобайтах
    • M — в мегабайтах
    • G — в гигабайтах

    Команда find

    В результате выполнения команды будет выведен список файлов без какой-либо дополнительной информации.

    Вывод подробной информации

    Добавим в вывод информацию о каждом файле и отсортируем список по размеру. Выполняем команду

    команда find xargs

    Данная команда состоит из трех частей:

    • Команда find ищет файлы, которые имеют размер больше 512 мегабайт.
    • Результирующий список файлов передается команде xargs , которая, в свою очередь, запускает команду ls -lh над этим списком файлов. В результате получается таблица с файлами и информацией о файлах.

    Опция -r , команды xarg, используется для того, чтобы не запускать команду ls, если команда find вернула пустой результат (не нашла файлов). Вместо -r можно использовать длинную запись — опцию --no-run-if-empty
    Опция -d ’\n’ используется, чтобы разделять список файлов только по символу новой строки (по \n ). А у нас так и есть — каждый файл на новой строке. Иначе неправильно будут обработаны файлы, в названии которых содержится пробел, так как по умолчанию команда xarg в качестве разделителя использует одновременно пробел, табуляцию или символ новой строки.

    Поиск больших файлов и директорий командой du

    Команда du используется для вывода размеров файлов и директорий в Linux. Ее можно использовать для поиска больших файлов и директорий. Для этого выполняется команда du и результат сортируется по размеру. Таким образом можно увидеть, кто занимает больше всего места на диске.

    Со временем на вашем диске может появиться множество ненужных файлов, занимающих много места на диске. Обычно в системах Linux не хватает места на диске из-за больших файлов журналов или резервных копий.

    В этом руководстве объясняется, как найти самые большие файлы и каталоги в системах Linux с помощью команд find и du .

    Найдите большие файлы с помощью команды find

    Например, чтобы найти файлы размером более 100 МБ в текущем рабочем каталоге , вы должны выполнить следующую команду:

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

    В результате будет отображен список файлов без дополнительной информации.

    Команда find также может использоваться в сочетании с другими инструментами, такими как ls или sort для выполнения операций с этими файлами.

    В приведенном ниже примере мы передаем вывод команды find в ls который распечатывает размер каждого найденного файла, а затем передает этот вывод команде sort для сортировки на основе 5-го столбца, который является размером файла.

    Результат будет выглядеть примерно так:

    Если вывод содержит много строк информации, вы можете использовать команду head для печати только первых 10 строк:

    Команда find имеет множество мощных опций. Например, вы можете искать большие файлы старше x дней, большие файлы с определенным расширением или большие файлы, принадлежащие определенному пользователю.

    Найдите большие файлы и каталоги с помощью команды du

    Команда du используется для оценки использования файлового пространства и особенно полезна для поиска каталогов и файлов, занимающих большие объемы дискового пространства.

    Следующая команда распечатает самые большие файлы и каталоги:

    • du -ahx . : оценка использования дискового пространства в текущем рабочем каталоге ( . ), подсчет файлов и каталогов ( a ), размеры печати в удобочитаемом формате ( h ) и пропуск каталогов в разных файловых системах ( x ).
    • sort -rh : сортировать строки, сравнивая значения в удобочитаемом формате ( -h ), и отменять результат ( -r ). : печатает только первые пять строк конвейерного вывода.

    У команды du есть много других опций, которые можно использовать для уточнения вывода об использовании дискового пространства.

    Выводы

    Мы показали вам, как найти самые большие файлы и каталоги с помощью команд find и du .

    Теперь, когда вы узнали, как находить самые большие файлы в своей системе, вы можете прочитать наше руководство о том, как удалить файлы и каталоги с помощью командной строки Linux .

    Если у вас есть вопросы или замечания, пожалуйста, оставьте комментарий ниже.

    Если на вашем жёстком диске закончилось свободное пространство, самый простой способ его освободить - найти и удалить самые большие и при этом ненужные файлы. Такая задача может возникнуть как на сервере, так и на домашнем компьютере, поэтому существуют удобные решения для обоих ситуаций. Способов поиска больших файлов существует очень много.

    Как вы уже поняли, в этой небольшой инструкции мы рассмотрим, как найти большие файлы Linux с помощью графического интерфейса или консольных утилит. Будем двигаться от самого простого к более сложному.

    Поиск больших файлов Linux

    1. GDMap

    Несмотря на то, что графических утилит есть около десятка, все они мне не очень нравятся. Например в Gnome можно использовать GDMap, а в KDE - fileslight. Обе утилиты сканируют файловую систему и выводят все файлы в виде диаграммы. Размер блока зависит от размера файла. Чем больше файл или папка, тем больше блок. Для установки GDMap в Ubuntu выполните:

    sudo apt install gdmap

    Затем запустите утилиту из главного меню. По умолчанию она отображает домашнюю папку. Здесь можно оценить, какие файлы самые увесистые.


    2. Утилита ncdu

    Это псевдографическая утилита, которая работает в терминале Linux. Она отображает список файлов и директорий по объёму и, что самое интересное, тут же позволяет удалять ненужные файлы. Для установки утилиты выполните:

    sudo apt install ncdu

    Затем запустите утилиту, передав ей в качестве параметра папку, которую надо просканировать. Можно проверить ту же домашнюю папку:


    У утилиты очень простое управление. Для перемещения по списку используйте кнопки со стрелками вверх и вниз, для открытия папки - клавишу 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.

    Нет похожих записей


    Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

    Найти большие файлы в Linux

    Со временем на вашем диске может появиться много ненужных файлов, которые занимают много места на диске. Обычно в системах Linux не хватает места на диске из-за больших файлов журнала или резервных копий.

    Найти большие файлы с помощью find команды

    Команда find является одним из самых мощных инструментов в арсенале системных администраторов Linux. Это позволяет вам искать файлы и каталоги на основе различных критериев, включая размер файла.

    Например, если вы хотите искать файлы размером более 100 МБ, в текущем рабочем каталоге вы должны использовать следующую команду:


    Замените . путь к каталогу, в котором вы хотите искать самые большие файлы.

    Вывод покажет список файлов без дополнительной информации.

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

    В приведенном ниже примере мы передаем выходные данные find команды, в ls которой будет напечатан размер каждого найденного файла, а затем передаем эти выходные данные sort команде, чтобы отсортировать ее по 5-му столбцу, который является размером файла.

    Вывод будет выглядеть примерно так:


    Если выходные данные содержат много строк информации, вы можете использовать head команду для печати только первых 10 строк:


    Давайте разберем команду:

    • find . -xdev -type f -size +100M -print - искать только файлы ( -type f ) в текущем рабочем каталоге ( . ), размером более 100 МБ ( -size +100M ), не спускаться в каталоги на других файловых системах ( -xdev ) и печатать полное имя файла в стандартном выводе, за которым следует новая строка ( -print ) ,
    • xargs ls -lh - вывод find команды передается по конвейеру, xargs который выполняет ls -lh команду, которая будет печатать вывод в длинном листинговом удобочитаемом формате.
    • sort -k5,5 -h -r - сортировка строк на основе 5-го столбца ( -k5,5 ), сравнение значений в удобочитаемом формате ( -h ) и обратный результат ( -r ).
    • head : печатает только первые 10 строк конвейерного вывода.

    Команда find поставляется с множеством мощных опций. Например, вы можете искать большие файлы старше x дней, большие файлы с определенным расширением или большие файлы, принадлежащие конкретному пользователю.


    Найти большие файлы и каталоги с помощью du команды

    Команда du используется для оценки использования файлового пространства и особенно полезна для поиска каталогов и файлов, которые занимают много места на диске.

    Следующая команда напечатает самые большие файлы и каталоги:

    Первый столбец содержит размер файла, а второй - имя файла:

    • du -ahx . : оцените использование дискового пространства в текущем рабочем каталоге ( . ), подсчитайте как файлы, так и каталоги ( a ), размеры печати в удобочитаемом формате ( h ) и пропустите каталоги в разных файловых системах ( x ).
    • sort -rh : сортировка строк путем сравнения значений в удобочитаемом формате ( -h ) и обратный результат ( -r ). : печатает только первые 5 строк конвейерного вывода.

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


    Вывод

    Поиск больших файлов очень полезен, когда ваш диск заполнен, и вы хотите освободить его.

    Теперь, когда вы нашли самые большие файлы в своей системе, вы можете прочитать наше руководство о том, как удалять файлы и каталоги с помощью командной строки Linux .

    Читайте также: