Linux пустая папка весит

Свободное место на разделах Linux и занимаемое папками пространство

Системы на базе UNIX, весьма стабильны, и если они перестают работать корректно, первым делом, необходимо убедиться в наличие свободного дискового пространства. В данной инструкции приведены примеры консольных команд.

Занимаемое место всеми разделами

Базовая команда, которая работает для всех систем семейства UNIX:

* -h добавлено для более читабельного вывода информации по занимаемому месту. Без данной опции информация будет показана в килобайтах.

Примерный результат выполнения команды:

1 — путь к файловому разделу (диск, внешний накопитель, сетевая шара и так далее).
2 — полный объем раздела.
3 — объем использованного пространства.
4 — сколько еще осталось места.
5 — сколько использовано в процентах.
6 — куда примонтирована файловая система.

Посмотреть занимаемое место папками

Чтобы узнать, какой именно каталог занимает много места, воспользуемся командой:

* в данном примере смотрим все папки корневого раздела (/).

Примерный вывод будет следующий:

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

То же самое с сортировкой по весу папки:

du -d1 / | sort -nr

Вес одной папки и ее содержимого

Отобразить занимаемое место конкретной папки и всего ее содержимого можно следующей командой:

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

Что чаще всего занимает место на диске

Из данных, которые могут занимать много места, и которые можно чистить, как правило, являются log-файлы — журналы приложений и операционной системы. Это текстовая информация, которая хорошо поддается сжатию. Чтобы автоматизировать процесс чистки логов, воспользуйтесь инструкцией Ротация логов в Linux и FreeBSD с помощью logrotate.

Также место могут занимать временные данные — они находятся в каталоге /tmp.

Источник

Узнаем размер папки в Linux

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

Способы определения размера папки

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

Способ 1: Терминал

Чтобы получить подробнейшую информацию о размере папок в Linux, лучше воспользоваться командой du в «Терминале». Хотя данный способ может отпугнуть неопытного пользователя, который только перешел на Linux, он отлично подойдет для выяснения нужной информации.

Синтаксис

Вся структура утилиты du выглядит следующим образом:

du
du название_папки
du [опция] название_папки

Как видно, синтаксис у нее может строиться по-разному. Например, при выполнении команды du (без указания папки и опции) вы получите стену текста с перечислением размеров всех папок в текущей директории, что крайне неудобно для восприятия.

Лучше использовать опции, если вы хотите получить структурированные данные, подробнее о чем будет рассказано ниже.

Опции

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

  • — вывести на экран сведения о суммарном размере файлов, помещенных в каталог (в конце списка указывается суммарный объем всех файлов в папке).
  • —apparent-size — показать достоверный объем помещенных внутрь каталогов файлов. Параметры некоторых файлов в папке иногда бывают недействительными, на это влияет множество факторов, так что использование этой опции помогает удостовериться в корректности данных.
  • -B, —block-size=РАЗМЕР — перевести полученные результаты в килобайты (K), мегабайты (M), гигабайты (G), терабайты (T). Например, команда с опцией -BM выведет размер папок в мегабайтах. Обратите внимание, что при использовании различных величин их значение имеет погрешность, ввиду округления до меньшего целого числа.
  • -b — отображать данные в байтах (равнозначно —apparent-size и —block-size=1).
  • — показывать общий итог подсчета размера папки.
  • -D — приказ проследовать лишь по тем ссылкам, которые указаны в консоли.
  • —files0-from=ФАЙЛ — показать отчет по использованию диска, чье имя будет введено вами в графу «ФАЙЛ».
  • -H — равнозначен ключу -D.
  • -h — перевести все значения в понятный для человека формат, используя соответствующие единицы измерения данных (килобайты, мегабайты, гигабайты и терабайты).
  • —si — практически равносильна прошлой опции, за исключением того, что использует делитель, равный одной тысяче.
  • -k — отображать данные в килобайтах (то же самое, что и команда —block-size=1000).
  • -l — приказ приплюсовывать все данные в том случае, когда есть боле одной сноски на один и тот же объект.
  • -m — отображать данные в мегабайтах (аналогично команде —block-size-1000000).
  • -L — строго следовать указанным символьным ссылкам.
  • -P — аннулирует предыдущую опцию.
  • -0 — каждую выводимую строчку информации заканчивать нулевым байтом, а не начинать новую строку.
  • -S — при подсчете занятого пространства не учитывать размер самих папок.
  • -s — показывать размер лишь той папки, которую вы указали в качестве аргумента.
  • -x — не выходить за пределы указанной файловой системы.
  • —exclude=ОБРАЗЕЦ — игнорировать все файлы, совпадающие с «Образцом».
  • -d — задать глубину следования папкам.
  • —time — показать сведения о последних изменениях в файлах.
  • —version — уточнить версию утилиты du.

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

Читайте также:  Unetbootin linux как примонтировать флешку

Примеры использования

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

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

Для вывода данных об интересующей вас папке введите ее имя в контекст команды. К примеру:

du /home/user/Загрузки
du /home/user/Изображения

Чтобы было проще воспринимать всю выводимую информацию, воспользуйтесь опцией -h. Она подстроит размер всех папок под общепринятые единицы измерения цифровых данных.

du -h /home/user/Загрузки
du -h /home/user/Изображения

Для полного отчета об объеме, занимаемом определенной папкой, укажите вместе с командой du опцию -s, а после — имя интересующей вас папки.

du -s /home/user/Загрузки
du -s /home/user/Изображения

Но удобнее будет задействовать опции -h и -s вместе.

du -hs /home/user/Загрузки
du -hs /home/user/Изображения

Опция применяется для вывода общей суммы, занимаемого папками места (ее можно применить вместе с опциями -h и -s).

du -chs /home/user/Загрузки
du -chs /home/user/Изображения

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

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

Способ 2: Файловый менеджер

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

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

Чтобы узнать размер папки в Linux с помощью файлового менеджера, выполните следующие действия:

Читайте также:  How to get pid in windows

    Откройте менеджер файлов, нажав по иконке на панели задач или проведя поиск по системе.

  • Перейдите в директорию, где находится нужная папка.
  • Нажмите правой кнопкой мыши (ПКМ) по папке.
  • Из контекстного меню выберите пункт «Свойства».

    После проделанных манипуляций перед вами появится окно, в котором нужно отыскать строку «Содержание» (1), напротив нее и будет указан размер папки. Кстати, чуть ниже будет находиться информация об оставшемся свободном месте на диске (2).

    Заключение

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

    Помимо этой статьи, на сайте еще 12315 инструкций.
    Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

    Отблагодарите автора, поделитесь статьей в социальных сетях.

    Источник

    Bash-скриптинг: тест для пустой директории

    Я хочу проверить, не содержит ли каталог никаких файлов. Если так, я пропущу некоторую обработку.

    Я попробовал следующее:

    Это дает следующую ошибку:

    Есть ли решение / альтернатива?

    16 ответов 16

    Также было бы здорово проверить, существует ли каталог раньше.

    Нет необходимости считать что-либо или ракушки. Вы также можете использовать read в сочетании с find . Если вывод find пуст, вы вернете false :

    Это должно быть портативным.

    Это сделает работу в текущем рабочем каталоге (.):

    или та же команда разделена на три строки, чтобы быть более читабельной:

    Просто замените ls -1A . | wc -l с ls -1A | wc -l если вам нужно запустить его в другой целевой папке.

    Редактировать: я заменил -1a -1A (см. Комментарий @Daniel)

    Таким образом, вы не зависите от формата вывода ls . -mindepth пропускает сам каталог, -maxdepth предотвращает рекурсивную защиту в подкаталогах для ускорения работы.

    Хакерский, но бездарный, без PID способ:

    Это использует тот факт, что встроенная команда test завершается с 2, если задано более одного аргумента после -e : во-первых, глобус «$1″/* расширяется с помощью bash. Это приводит к одному аргументу на файл. Так

    Читайте также:  Windows 10 paint при сохранении вылетает

    Если файлов нет, звездочка в test -e «$1″* не раскрывается, поэтому Shell возвращается к файлу с именем * , который возвращает 1.

    . за исключением случаев, когда на самом деле есть один файл с именем точно * , тогда звездочка расширяется до нуля, звездочка, которая заканчивается тем же вызовом, что и выше, т.е. test -e «dir/*» , только на этот раз возвращает 0. (Спасибо @TrueY за указание на это.)

    Если есть один файл, запускается test -e «dir/file» , который возвращает 0.

    Но если файлов больше, чем 1, запускается test -e «dir/file1» «dir/file2» , который bash сообщает об этом как об ошибке использования, то есть 2.

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

    Возможные проблемы, которые я не проверял:

    Есть больше файлов, чем количество разрешенных аргументов — я думаю, это может вести себя подобно случаю с 2+ файлами.

    Или на самом деле есть файл с пустым именем — я не уверен, что это возможно на любой вменяемой OS/FS.

    С FIND(1) (под Linux и FreeBSD) вы можете нерекурсивно просматривать запись каталога с помощью «-maxdepth 0» и проверять, является ли она пустой с помощью «-empty». Применительно к вопросу это дает:

    РЕДАКТИРОВАТЬ: Я думаю, что это решение отлично работает с GNU Find, после быстрого взгляда на реализацию. Но это может не работать, например, с поиском netbsd. Действительно, он использует поле st_size stat(2). Руководство описывает это как:

    Лучшее решение, также более простое:

    Кроме того, -прень в 1-м решении бесполезна.

    РЕДАКТИРОВАТЬ: нет-выход для gnu find .. вышеприведенное решение хорошо для поиска в NetBSD. Для GNU find это должно работать:

    Я думаю, что лучшее решение:

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

    Это будет работать правильно, даже если имена файлов содержат пробелы.

    Как насчет тестирования, если каталог существует и не пуст в одном операторе if?

    Это все здорово — просто превратил его в скрипт, чтобы я мог проверять наличие пустых каталогов ниже текущего. Нижеследующее должно быть помещено в файл с именем ‘findempty’, где-то помещен в путь, чтобы bash мог найти его и затем запустить chmod 755. Я думаю, можно легко изменить ваши специфические потребности.

    Это работает для меня, чтобы проверить и обработать файлы в каталоге ../IN , учитывая, что скрипт находится в ../Script directory:

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

    Не используйте этот хак, если есть другие процессы, которые могут стать некомпетентными из-за каталога, который, как они знают, ненадолго прекратит свое существование.

    Если rmdir не будет работать для вас, и вы можете тестировать каталоги, которые могут содержать большое количество файлов, любое решение, основанное на глобализации оболочки, может работать медленно и / или работать с ограничениями длины командной строки. Вероятно, лучше использовать find в этом случае. Самое быстрое решение для find я могу придумать, идет как

    Это работает для GNU и BSD версий find но не для Solaris, в которой отсутствуют все эти операторы find . Люблю свою работу, Оракул.

    Источник

  • Оцените статью