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 выполнить произвольный sql запрос

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

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

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

Bitrix сбросить буфер вывода

Функция RestartBuffer() в Bitrix используется для сброса буфера вывода. Она позволяет прервать вывод страницы на определенном этапе выполнения скрипта и начать вывод заново. В статье рассмотрим основные сценарии использования данной функции, рассмотрим пример кода.

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

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

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

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

Подключить bitrix без подключения шаблона сайта

В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.

Комментарии

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