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

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

PHP Удалить лишние нули после запятой

Когда в проекте диапазон чисел от 0,0001 до 1 000 000, удобно автоматически удалять лишнии нули после запятой.

Bitrix подключить модуль

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

Битрикс 24 удалить сделку

В статье приводятся способы удаления сделки.

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

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

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

В статье приводится пример кода для получения директории в которой находится файл компонента.

Bitrix выполнить произвольный sql запрос

В статье приведен пример как выполнить произвольный sql запрос используя стандартные средства Bitrix

Комментарии

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