PHP вывод использованного места по каталогам

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

Для получения размера конкретного каталога будет использоваться команда du с параметрами -sh, что вернет размер каталога в человекопонятном виде, например: 1K, 234M, 2G.

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

<?php 
$path = '/var/www/test';
if(!empty($_GET["dir"])) {
    $path = $_GET["dir"];
}

if (!empty($path) && is_dir($path)) {
    $size = getSize($path);
    echo "<h2>Директория: {$path} ({$size})</h2>";
    
    $directorys = scandir($path);
    unset($directorys[0]);
    unset($directorys[1]);
    if (!empty($directorys)) {
        echo '<ul>';
        foreach ($directorys as $one) {
            $size = getSize($path . '/' . $one);
            echo '<li><a href="?dir=' . $path . '/' . $one . '">' . $one . '</a> ' . $size . '</li>';
            unset($out);
        }
        echo '</ul>';
    }
}
else {
    echo '<p>Неверный или пустой путь!</p>';
}

function getSize($path)
{
    exec("du -sh {$path}", $out);
    $temp = explode('	', $out[0]);
    return $temp[0];
}

Результат:

PHP вывод использованного места по каталогам

Подключив bootstrap и добавив нужных классов можно улучшить отображение к примеру до такого:

PHP вывод использованного места по каталогам

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

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

Важно! Для правильно работы скрипта, необходимы права доступа к анализируемому каталогу.

Рубрики: PHP

Если есть вопросы, что-то в статье не понятно или нашли ошибку, напишите об этом в комментариях, все комментарии читаются и по возможности материал будет доработан.
Популярные статьи

Bitrix регистрация своего события

В статье приводится пример регистрации собственного события в bitrix и добавления на него обработчика.

Bitrix подключить класс компонента

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

Bitrix получить путь до зарегистрированного файла

В статье приводится пример того как можно получить путь до зарегистрированного файла по его ID с помощью метода CFile::getPath($fileId). Так же показано где можно получить ID зарегистрированного файла.

Bitrix получить ID текущего покупателя

В статье приводится пример кода для получения ID текущего покупателя в bitrix.

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

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

CSS простой горизонтальный слайдер

В статье приводится пример кода для создания простого горизонтального слайдера с использованием CSS и небольшим количеством JS кода. Для реализации потребуется всего около 60 строк стилей и js кода.

Комментарии

Комментариев пока нет
Данный сайт использует файлы cookies. Продолжая просмотр сайта, вы соглашаетесь с использованием файлов cookies.
ОК