Как найти наиболее часто используемые каталоги и файлы на диске в Linux

Как администратор Linux, вы должны периодически проверять, какие файлы и папки занимают больше всего места на диске, потому что очень важно находить ненужный мусор и освобождать от него жесткий диск.
В этой статье вы узнаете, как найти самые большие файлы и каталоги, занимающие дисковое пространство в Linux, используя команды du, find и ncdu с примерами.
Найдите самые большие каталоги в Linux с помощью команды du
Выполните следующую команду, чтобы узнать 5 самых больших каталогов в разделе /home .
du -a /home | sort -n -r | head -n 5
Если вы хотите отобразить самые большие каталоги в текущей рабочей директории, выполните следующую команду:
du -a | sort -n -r | head -n 5
Давайте разберем команду и посмотрим, что означает каждый параметр.
duкоманда: оценка использования дискового пространства.a: отображает все файлы и папки.sortкоманда : сортировка строк в текстовых файлах.-n: сравнение по числовому значению строки.-r: изменение результата сравнения на противоположное.head: вывод первой части файлов.-n: вывод первых‘n’строк. (в нашем случае мы вывели первые 5 строк).
Отображение использования дискового пространства в удобном для восприятия формате (МБ, ГБ)
Некоторые из вас хотели бы видеть приведенные выше результаты в удобном для восприятия формате. Например, вы можете отображать самые большие файлы в КБ, МБ или ГБ.
du -hs * | sort -rh | head -5
Приведенная выше команда покажет верхние каталоги, которые занимают больше всего места на диске. Если вы считаете, что некоторые каталоги не так важны, вы можете просто удалить несколько подкаталогов или всю папку, чтобы освободить место.
Найдите корневые каталоги и подкаталоги по размеру
Чтобы отобразить самые большие папки/файлы, включая подкаталоги, выполните следующую команду:
du -Sh | sort -rh | head -5
Узнайте значение каждого параметра с помощью приведенной выше команды:
duкоманда: оценка использования дискового пространства.-h: вывод размеров в удобочитаемом формате (например, 10 МБ).-S: не учитывать размер подкаталогов.-s: отображать только общее значение для каждого аргумента.sortкоманда: сортировка строк в текстовых файлах.-r: обратный порядок сравнения.-h: сравнение чисел в удобочитаемом формате (например, 2 КБ, 1 ГБ).head: вывод первой части файлов.
Найдите самые большие файлы в Linux с помощью команды find
Если вы хотите отобразить только файлы самого большого размера, выполните следующую команду:
find -type f -exec du -Sh {} + | sort -rh | head -n 5
Чтобы найти самые большие файлы в определенной папке, просто укажите путь после команды find:
find /home/andreyex/Downloads/ -type f -exec du -Sh {} + | sort -rh | head -n 5
или
find /home/andreyex/Downloads/ -type f -printf "%s %p\n" | sort -rn | head -n 5
Приведенная выше команда выведет самый большой файл из каталога /home/tecmint/Downloads.
Как найти файлы размером больше определенного значения в Linux
Иногда вам не нужно просматривать все файлы в порядке убывания размера, а нужно просто найти файлы, размер которых превышает определенное значение, например файлы размером более 100 МБ или 1 ГБ.
find /home -type f -size +100M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
Чтобы найти файлы размером более 1 ГБ:
find /home -type f -size +1G -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
Вы также можете искать файлы определенного размера, например от 10 до 100 МБ:
find /home -type f -size +10M -size -100M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
Исключение каталогов из поиска по использованию дискового пространства
При анализе использования дискового пространства можно исключить определенные каталоги, например /proc, /sys, или подключенные внешние диски, чтобы получить более точные результаты.
du -h --exclude=/proc --exclude=/sys --exclude=/dev / | sort -rh | head -n 10
Чтобы исключить несколько каталогов при использовании команды find:
find /home -type f -not -path "*/node_modules/*" -not -path "*/.cache/*" -exec du -Sh {} + | sort -rh | head -n 10
Это особенно полезно при работе с каталогами разработки, где node_modules или папки с кэшем могут искажать результаты.
Найдите старые большие файлы, к которым давно не обращались
Чтобы найти большие файлы, к которым давно не обращались (потенциальные кандидаты на архивирование или удаление), объедините параметры размера и времени:
find /home -type f -size +50M -atime +180 -exec ls -lh {} \;
Приведенная выше команда находит файлы размером более 50 МБ, к которым не обращались в течение последних 180 дней.
Найти большие файлы, измененные более года назад
Чтобы найти большие файлы, измененные более года назад:
find /var/log -type f -size +100M -mtime +365 -exec ls -lh {} \;
Просмотр использования дискового пространства по типу файлов (расширению)
Если вы хотите узнать, какие типы файлов занимают больше всего места, вы можете сгруппировать файлы по расширениям:
find /home/andreyex -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn | head -10
Найдите общий объем памяти, занимаемый файлами журналов
Чтобы узнать общий объем памяти, занимаемый файлами определенных типов, например всеми .log файлами:
find /var/log -type f -name "*.log" -exec du -ch {} + | grep total$
Найдите общий объем памяти, занимаемый видеофайлами
Или найдите общий объем памяти, занимаемый видеофайлами:
find /home/andreyex -type f \( -name "*.mp4" -o -name "*.avi" -o -name "*.mkv" \) -exec du -ch {} + | grep total$
Найдите и удалите пустые файлы и каталоги
Пустые файлы и каталоги занимают индексные дескрипторы и засоряют вашу файловую систему. Вот как их найти:
Чтобы найти все пустые файлы:
find /home/andreyex -type f -empty
Чтобы найти все пустые каталоги:
find /home/andreyex -type d -empty
Если вы хотите удалить все пустые файлы (используйте с осторожностью):
find /home/andreyex -type f -empty -delete
Анализ использования дискового пространства с помощью утилиты ncdu
Несмотря на то, что команды du и find обладают широкими возможностями, утилита ncdu (NCurses Disk Usage) предоставляет интерактивный и удобный интерфейс для анализа использования дискового пространства.
Сначала установите ncdu:
sudo yum install ncdu [в RHEL/CentOS/Fedora] sudo apt install ncdu [в Debian/Ubuntu]
Затем запустите его в любом каталоге:
ncdu /home
Утилита ncdu позволяет перемещаться по каталогам с помощью клавиш со стрелками, удалять файлы с помощью клавиши 'd' и получать визуальное представление об использовании диска. Она особенно полезна, когда нужно быстро найти и освободить место в интерактивном режиме.
Как найти недавно созданные большие файлы в Linux
Чтобы найти недавно созданные большие файлы (это поможет определить, что занимает место на диске):
find /home -type f -size +50M -ctime -7 -exec ls -lh {} \;
Эта команда находит файлы размером более 50 МБ, созданные за последние 7 дней.
При использовании команды find с параметром -size помните о следующих единицах измерения:
c: байтыk: килобайты (1024 байта)M: мегабайты (1024 килобайта)G: гигабайты (1024 гигабайта)T: терабайты (1024 гигабайта)
Пример: -size +500M находит файлы размером более 500 мегабайт.
На этом пока всё. Найти самые большие файлы и папки несложно. С этим легко справится даже начинающий администратор. Если вам понравился этот урок, поделитесь им в своих социальных сетях и поддержите andreyex.
Редактор: AndreyEx