Вопрос или проблема
Можно ли перечислить самые большие файлы на моем жестком диске? Я часто использую df -H
для отображения использования диска, но это показывает только процент заполненности, оставшиеся ГБ и т.д.
Я занимаюсь множеством вычислений, требующих больших объемов данных, с большим количеством маленьких и очень небольшим количеством очень больших файлов. Поскольку большинство используемого дискового пространства занимают очень небольшое количество файлов, бывает трудно отследить, где находятся эти большие файлы. Удаление файла размером 1 кБ освобождает мало места, но удаление файла размером 100 ГБ — существенно. Есть ли какой-то способ отсортировать файлы на жестком диске по их размеру?
Спасибо.
С использованием стандартных доступных инструментов:
Чтобы вывести 10 самых больших файлов из текущего каталога: du . | sort -nr | head -n10
Чтобы вывести самые большие каталоги из текущего каталога: du -s * | sort -nr | head -n10
ОБНОВЛЕНИЕ В наши дни я обычно использую более удобочитаемую форму (как объясняет Джей Чакра в другом ответе) и оставляю | head -n10
, просто позволяя ему прокручиваться вниз по экрану. Последняя строка содержит самый большой файл или каталог (дерево).
Иногда, например, когда у вас много точек монтирования в текущем каталоге, вместо использования -x
или нескольких --exclude=PATTERN
, удобнее монтировать файловую систему в неиспользуемую точку монтирования ( часто /mnt
) и работать оттуда.
Обратите внимание, что при работе с большими (NFS) томами вы можете создать значительную нагрузку на хранилище (файловый сервер), запуская du
по множеству (под)каталогов. В таких случаях лучше подумать об установке quota
на том.
Добавление к ответу джиппи
Чтобы вывести самые большие каталоги из текущего каталога в удобочитаемом формате:
du -sh * | sort -hr | head -n10
Пример:
[~]$ du -sh * | sort -hr | head -n10
48M app
11M lib
6.7M Vendor
1.1M composer.phar
488K phpcs.phar
488K phpcbf.phar
72K doc
16K nbproject
8.0K composer.lock
4.0K README.md
Это делает его более удобочитаемым 🙂
Попробуйте ncdu
, так как он может дать вам обзор использования диска. С сайта:
Анализатор использования диска с интерфейсом ncurses, предназначенный для работы на удаленном сервере, где у вас нет полноценной графической настройки, а только простое SSH-соединение. ncdu стремится быть быстрым, простым и легким в использовании и должен быть способен работать в любом минимальном подобном POSIX окружении с установленным ncurses.
(gnu)
du -max /dir | sort -n
Покажет большие файлы, а также большие каталоги, может быть использован для определения, где необходимо провести очистку.
du -max | sort -n | tail -1000
...
46632 ./i386/update/SuSE-SLES/8/rpm/i586/kernel-source-2.4.21-138.i586.rpm
49816 ./UnitedLinux/apt/i386/RPMS.updates/k_debug-2.4.21-138.i586.rpm
679220 ./UnitedLinux/apt/i386/RPMS.updates
679248 ./UnitedLinux/apt/i386
679252 ./UnitedLinux/apt
691820 ./UnitedLinux/i586
691836 ./i386/update/SuSE-SLES/8/rpm/i586
695192 ./i386/update/SuSE-SLES/8/rpm
695788 ./i386/update/SuSE-SLES/8
695792 ./i386/update/SuSE-SLES
695804 ./i386/update
695808 ./i386
1390184 ./UnitedLinux
(Я знаю, что это довольно старое дерево :p )
Есть простой и эффективный способ узнать размер каждого файла и каталога в Ubuntu:
Программы > Стандартные > Анализатор использования диска
в этом окне нажмите кнопку “Сканировать файловую систему” на панели инструментов. через короткое время (секунды) вы получите использование диска каждого каталога и файла.
Вы можете попробовать эту команду, она перечислит все файлы размером более 20Mb.
find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null \
| awk '{ print $NF ": " $5 }' | sort -hrk 2,2
Если вы предпочитаете графический инструмент, есть https://github.com/shundhammer/qdirstat
С помощью GNU инструментов:
find . -type f -printf '%b %p\0' |
sort -rzn |
head -zn 20 |
tr '\0' '\n'
Покажет 20 самых больших обычных файлов с точки зрения использования диска (%b
сообщает использование диска в 512-байтовых единицах) в текущем рабочем каталоге.
Чтобы сделать это для всей файловой системы, замените find .
на find /mount/point/of/that/filesystem -xdev
.
Чтобы получить ввод с удобочитаемыми суффиксами K
/M
/G
…, можно вставить вызов numfmt
как:
find . -type f -printf '%b %p\0' |
sort -rzn |
head -zn 20 |
numfmt -z --from-unit=512 --to=iec |
tr '\0' '\n'
введите следующую команду
cd /
затем введите
du -sh * | grep G
вышеуказанная команда покажет вам, сколько памяти используется каждым каталогом. после этого вы должны решить, какие каталоги или файлы вы хотите удалить
используйте команду ncdu для анализа использования диска. Вот как установить и использовать ее:
sudo apt update && sudo apt install -y ncdu
Это будет сканировать вашу файловую систему и предоставит интерфейс для исследования использования диска.
Дополнительные команды для поиска больших файлов и каталогов:
Найти самые большие каталоги:
du -ah / | sort -rh | head -20
Это выведет 20 самых больших каталогов и файлов.
Найти большие файлы (больше 500МБ):
find / -type f -size +500M -exec ls -lh {} + | awk '{ print $9 ": " $5 }'
Это поможет найти большие файлы, которые могут занимать пространство.
Проверить объем используемого пространства каждым каталогом в корне (/):
du -h --max-depth=1 /
Измените путь (/var, /home и т.д.), чтобы проверить конкретные места.
Вывести 10 самых больших файлов:
find / -type f -exec du -h {} + | sort -rh | head -10
Вы можете попробовать эту команду, и она выведет большой файл:
ls -lrS | tail -1
du -csb `ls` | sort -nr | head -n10
.
Ответ или решение
Чтобы выявить файлы, занимающие наибольшее пространство на вашем жестком диске, можно использовать различные инструменты и команды, которые доступны в UNIX-подобных системах. Одним из популярных инструментов для этого является команда du
(disk usage), которая позволяет определить, сколько места занимает тот или иной файл или директория. В сочетании с другими утилитами и командами Shell, такими как sort
, head
, и find
, можно эффективно отследить и идентифицировать наиболее объемные файлы и директории. Для более дружелюбного интерфейса также доступны графические инструменты, такие как ncdu
или qdirstat
, которые предоставляют анализ использования диска в удобном формате.
Теория
Когда речь идет об управлении дисковым пространством, одной из ключевых задач является понимание того, какие файлы или директории используют наибольшее количество пространств. Это особенно актуально для профессий и задач, связанных с обработкой больших объемов данных, где общая структура хранения может включать как множество мелких файлов, так и несколько крупных файлов, которые в сумме занимают львиную долю пространства.
Зачастую инструмент df -H
используется для общего понимания использования пространства, показывая процент заполненности дисков и объем доступного свободного места. Тем не менее, df
не предоставляет детализированной информации о том, какие конкретно файлы или директории занимают много места. Именно поэтому du
в связке с другими командами становится более эффективным решением для глубокой аналитики.
Пример
Рассмотрим примеры команд, которые могут быть использованы для нахождения больших файлов и директорий:
-
Нахождение 10 самых больших файлов в текущей директории:
du . | sort -nr | head -n10
Эта команда сначала вычисляет размер файлов в текущей директории с помощью
du
, затем сортирует их по убыванию (sort -nr
) и выводит первые 10 результатов (head -n10
). -
Нахождение самых больших директорий:
du -sh * | sort -hr | head -n10
С флагом
-s
мы получаем сумму для каждой директории, а-h
преобразует вывод в более читаемый формат (с указанием K, M, G). -
Графический анализ с помощью
ncdu
:
ncdu
представляет собой удобный инструмент для анализа дискового пространства через интерфейсncurses
, что особенно полезно на удаленных серверах.
Установка и использование:sudo apt update && sudo apt install -y ncdu ncdu /
-
Использование
find
для нахождения больших файлов:find / -type f -size +500M -exec ls -lh {} + | awk '{ print $9 ": " $5 }'
Эта команда находит файлы размером больше 500 МБ и выводит их с указанием размера.
-
Поиск самых крупных директорий начиная с корня:
du -ah / | sort -rh | head -20
Она выводит 20 самых больших файлов и директорий, упорядоченных по убыванию размера.
Применение
Знание, как находить файлы, которые занимают много места, чрезвычайно полезно для эффективного управления дисковым пространством. Например, определение и удаление ненужных больших файлов может существенно увеличить доступное пространство и повысить общую производительность системы.
Особенно важно время от времени проводить такие проверки на серверах, где критически важны ресурсы. Также, этот процесс полезен при оптимизации работы пользователя на персональном компьютере, где избыточное количество временных и устаревших файлов может замедлить работу системы и создать неудобства при выполнении повседневных задач.
Важно отметить, что перед удалением каких-либо файлов необходимо убедиться в их ненужности, так как это может повлиять на работу приложений и системы в целом. В этом плане инструменты, которые предоставляют визуальный интерфейс, могут помочь лучше понять, что именно находится на вашем диске и принять взвешенное решение.
Заключение
Таким образом, используя описанные команды и инструменты, можно не только систематизировать и управлять дисковым пространством, но и обеспечить надежную работу систем, увеличивая их эффективность и производительность. Применение грамотного подхода к мониторингу и очистке диска является фундаментальной частью работы IT-специалистов в самых разных областях.