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

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

CSS залить фон двумя цветами

В статье приводится пример того как можно с помощью CSS залить фон двумя цветами

Обзор google keep

Google Keep — универсального инструмента для создания и организации заметок. В статье рассмотрены основные возможности сервиса.

Bitrix: проверка авторизации пользователя

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

Комментарии

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