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 получить список установленных модулей

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

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

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

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

ТОП-10 полезных функций PHP, которые упростят разработку

ТОП-10 полезных функций PHP, которые упростят разработку

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

Использование chatGpt в работе: генерация html

Использование chatGpt в работе: генерация html

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

Bitrix: как подключить js или css файл?

Bitrix: как подключить js или css файл?

Чтобы подключить JavaScript и CSS файлы в bitrix сущствуют специальные методы addJs и addCss у класса \Bitrix\Main\Page\Asset. Давайте рассмотрим примеры...

Комментарии

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