- Поиск больших файлов Linux
- Поиск больших файлов Linux
- 1. GDMap
- 2. Утилита ncdu
- 3. Утилита du
- 4. Утилита find
- Выводы
- Как пользоваться командой Find в Linux
- Критерии
- Поиск по имени
- Поиск по типу файла
- Поиск по размеру файла
- Поиск пустых каталогов и файлов
- Поиск по времени изменения файла
- Поиск по времени доступа
- Поиск по имени пользователя
- Поиск по режиму доступа
- Операторы
- Действия
- Заключение
Поиск больших файлов Linux
Если на вашем жёстком диске закончилось свободное пространство, самый простой способ его освободить — найти и удалить самые большие и при этом ненужные файлы. Такая задача может возникнуть как на сервере, так и на домашнем компьютере, поэтому существуют удобные решения для обоих ситуаций. Способов поиска больших файлов существует очень много.
Как вы уже поняли, в этой небольшой инструкции мы рассмотрим, как найти большие файлы Linux с помощью графического интерфейса или консольных утилит. Будем двигаться от самого простого к более сложному.
Поиск больших файлов Linux
1. GDMap
Несмотря на то, что графических утилит есть около десятка, все они мне не очень нравятся. Например в Gnome можно использовать GDMap, а в KDE — fileslight. Обе утилиты сканируют файловую систему и выводят все файлы в виде диаграммы. Размер блока зависит от размера файла. Чем больше файл или папка, тем больше блок. Для установки GDMap в Ubuntu выполните:
Затем запустите утилиту из главного меню. По умолчанию она отображает домашнюю папку. Здесь можно оценить, какие файлы самые увесистые.
2. Утилита ncdu
Это псевдографическая утилита, которая работает в терминале Linux. Она отображает список файлов и директорий по объёму и, что самое интересное, тут же позволяет удалять ненужные файлы. Для установки утилиты выполните:
Затем запустите утилиту, передав ей в качестве параметра папку, которую надо просканировать. Можно проверить ту же домашнюю папку:
У утилиты очень простое управление. Для перемещения по списку используйте кнопки со стрелками вверх и вниз, для открытия папки — клавишу 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.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Как пользоваться командой Find в Linux
Команда find — невероятно мощный инструмент, и умение управлять им может быть полезным и облегчить работу в системе Linux. Она поможет эффективно выполнять различные задачи системного администрирования, такие как управление дисковым пространством, рекурсивные операции с файлами и резервное копирование.
Команда Find Linux выполняет поиск файлов и папок по заданным критериям и позволяет выполнять действия с результатами поиска. Синтаксис поиска таков:
$ find directory-to-search criteria action
- directory-to-search — это начальная точка, с которой утилита начинает поиск файлов. Поиск включает все подкаталоги в этом каталоге
- criteria (test) — указывает, какие файлы искать
- action — указывает, что делать с каждым найденным файлом, соответствующим критериям
Критерии
Поиск по имени
Вот простой пример. Следующая команда выполняет поиск файла a.txt в текущем каталоге:
По умолчанию, ключевое слово -name чувствительно к регистру и игнорирует файл A.txt . Чтобы убедиться, что поиск не учитывает регистр, используйте -iname :
$ find . -iname "a.txt" ./a.txt ./A.txt
Для поиска всех файлов изображений .jpg в текущем каталоге используйте шаблон подстановочных знаков * .jpg :
$ find . -name "*.jpg" ./genxfacebook2.jpg ./genxfacebook1.jpg ./Moodle2.jpg ./moodle.jpg ./moodle/moodle1.jpg ./genxfacebook.jpg
Можно использовать имя каталога для поиска. Например, для поиска всех изображений .jpg в каталоге /home :
$ find /home -name "*.jpg" find: `/home/ubuntu/.ssh': Permission denied /home/vagrant/Moodle2.jpg /home/vagrant/moodle.jpg /home/me/hello.jpg find: `/home/me/testfiles': Permission denied find: `/home/me/data': Permission denied /home/me/water.jpg find: `/home/me/.cache': Permission denied
При наличии слишком большого количества сообщений об отказе в доступе в конце команды можно добавить 2 >/dev/null . Это перенаправляет сообщения об ошибках на устройство /dev/null и выдает чистые выходные данные:
find /home -name "*.jpg" 2>/dev/null /home/vagrant/Moodle2.jpg /home/vagrant/moodle.jpg /home/me/hello.jpg /home/me/water.jpg
Поиск по типу файла
С помощью ключевого слова -type можно искать файлы по типу. Типы файлов могут быть:
f plain files d directories l symbolic links b block devices c character devices p named pipes s sockets
Например, при использовании параметра -type d будут перечислены только каталоги:
$ find . -type d . ./.ssh ./.cache ./moodle
Поиск по размеру файла
Возможно, потребуется выполнить поиск больших файлов и удалить их. В следующем примере за после ключевого слова -size следует строка 1G . Это приведет к поиску всех файлов размером более 1 ГБ.
$ find . -size +1G ./Microsoft_Office_16.29.19090802_Installer.pkg ./android-studio-ide-183.5692245-mac.dmg
Знак + означает, что нужно искать файлы, размер которых больше указанного числа. Символ минус — может использоваться для обозначения меньшего значения, чем указано. Использование без знака означало бы точное совпадение размера.
За номером следует единица измерения размера файла. Единицами измерения могут быть:
- b — Блоки по 512 байтов
- c — Байты
- k — Килобайты
- M — Мегабайты
- G — Гигабайты
Поиск пустых каталогов и файлов
Используйте параметр -empty для поиска пустых каталогов и файлов:
$ find . -empty ./.cloud-locale-test.skip ./datafiles ./b.txt . ./.cache/motd.legal-displayed
Поиск по времени изменения файла
С помощью ключевого слова -cmin можно выполнять поиск всех файлов и каталогов по времени создания или изменения. Для поиска всех файлов, измененных за последние 60 минут (менее 60), используйте -60 следующим образом:
$ find . -cmin -60 . ./a.txt ./datafiles
Для файлов, измененных в любое время до последних 60 минут, используйте 60 .
Поиск по времени доступа
Поиск файлов можно выполнить по времени последнего доступа с помощью ключевого слова -atime . Например, следующая команда выполняет поиск файлов, доступ к которым не осуществлялся за последние 180 дней:
Их можно переместить на устройство резервного копирования, если недостаточно места на диске.
Поиск по имени пользователя
С помощью параметра -user username можно искать все файлы и каталоги, принадлежащие конкретному пользователю. Например, следующая команда выполняет поиск всех файлов и каталогов, принадлежащих пользователю ubuntu в каталоге /home :
$ find /home -user ubuntu 2>/dev/null /home/ubuntu /home/ubuntu/.bash_logout /home/ubuntu/.bashrc /home/ubuntu/.ssh /home/ubuntu/.profile
Поиск по режиму доступа
Хотите найти файлы с определенным режимом доступа, то есть имеющие определенный набор разрешений? Используйте ключевого слова -perm . В следующем примере выполняется поиск файлов с разрешениями 777 :
Операторы
Для объединения нескольких ключевых слов в одной команде можно использовать следующие три логических оператора:
Например, следующая команда выполняет поиск файлов, превышающих 100MB, которыми владеет указанный пользователь:
$ find /home -user me -and -size +100M 2>/dev/null /home/me/kali-linux-2020.3-installer-netinst-i386.iso
Следующая команда ищет файлы, размер которых превышает 100MB, принадлежащие пользователю me или пользователю vagrant :
$ find /home ( -user vagrant -or -user me ) -and -size +100M 2>/dev/null /home/vagrant/LibreOffice_7.0.1_Linux_x86-64_deb.tar.gz /home/me/kali-linux-2020.3-installer-netinst-i386.iso
Необходимо поместить символ обратной косой черты перед скобками, чтобы предотвратить попытку их интерпретации оболочкой.
Действия
Утилита find предоставляет результаты поиска, а затем выбор для выполнения действия над ними. Ниже приведены некоторые предопределенные действия.
- -delete — Удаление файлов, соответствующих критериям поиска
- -ls — Отображение подробных выходных данных ls с размерами файлов и количеством входов
- -print — Показывает полный путь к соответствующим файлам. Это действие по умолчанию, если не указано другое действие
- -exec — Выполняет следующую команду в каждой строке результатов поиска
Итак, если вы хотите найти все пустые файлы и удалить их, вы можете сделать это следующим образом:
Внимание! Перед использованием действия удаления всегда безопасно выполнить команду один раз с действием -print и подтвердить результаты.
Действие -exec является особым. Он позволяет выполнить выбранную команду в результатах поиска. Это так:
- command – команда, которую требуется выполнить в результатах поиска, например, rm , mv или cp .
- <> – представляет результаты поиска.
- Команда заканчивается точкой с запятой с обратной косой чертой.
Таким образом, команда поиска и удаления всех пустых файлов может быть написана следующим образом:
Вот еще один пример использования действия -exec . Следующая команда копирует все PNG-файлы образов в каталог backup/images :
$ find . -name "*.png" -exec cp <> /backups/images ;
Заключение
Команда find используется для поиска файлов по имени, дате последнего доступа, дате последнего изменения, имени пользователя (владельца), имени группы, размеру, разрешениям и другим различным критериям. Эти результаты поиска позволяют выполнять с ними такие действия, как удаление, копирование или перемещение в другое расположение.
После того, как вы освоите команду find, она может помочь вам и упростить задачи системного администрирования. И ключ к его освоению — это его практика и использование!