Системный Администратор | Sysadmin Windows & Linux Server. Настройка Сети, ПК и Железа. IT Уроки для Сисадмина: Безопасность, Софт и Техподдержка (Helpdesk). Компьютерная помощь.
Системный Администратор | Sysadmin Windows & Linux Server. Настройка Сети, ПК и Железа. IT Уроки для Сисадмина: Безопасность, Софт и Техподдержка (Helpdesk). Компьютерная помощь.
5 359 подписчиков · @i_odmin
К каналу →
📌 Шпаргалка для работы с Grafana + Loki! 🔥 🚀 Grafana + Loki — мощный стек для централизованного логирования и визуализации логов. Loki собирает логи, а Grafana отображает их в у…
Читать далее →
1 118
Как подготовиться к плановой проверке Роскомнадзора? Читайте в канале КСБ-СОФТ алгоритм действий для операторов персональных данных 🖥️ Подписывайтесь на канал, чтобы видеть еще бо…
Читать далее →
634

📈 Скрипт показывает, какие каталоги выросли с прошлого запуска Скрипт ниже делает снимок размеров каталогов (через du)

📈 Скрипт показывает, какие каталоги выросли с прошлого запуска

Скрипт ниже делает снимок размеров каталогов (через du), а при следующем запуске покажет топ приростов - кто вырос и на сколько.

#!/usr/bin/env bash
# автор: https://t.me/i_odmin

set -Eeuo pipefail

usage() {
cat <<'HELP'
Usage: du-delta.sh [-p PATH] [-d DEPTH] [-n TOP] [-t THRESH] [-s STATE_DIR]
-p PATH Корень анализа (по умолчанию /)
-d DEPTH Глубина du (по умолчанию 2)
-n TOP Сколько строк показать (по умолчанию 15)
-t THRESH Порог роста (например 100M, 1G; по умолчанию 100M)
-s STATE_DIR Директория состояния (по умолчанию /var/lib/du-delta)
-h Помощь
Прим.: требуются права на чтение анализируемых каталогов.
HELP
}

PATH_TO="/"
DEPTH=2
TOP=15
THRESH="100M"
STATE_DIR="/var/lib/du-delta"

while getopts ":p:d:n:t:s:h" opt; do
case "$opt" in
p) PATH_TO="$OPTARG" ;;
d) DEPTH="$OPTARG" ;;
n) TOP="$OPTARG" ;;
t) THRESH="$OPTARG" ;;
s) STATE_DIR="$OPTARG" ;;
h) usage; exit 0 ;;
\?) echo "Неизвестный параметр: -$OPTARG" >&2; usage; exit 1 ;;
🙂 echo "Параметру -$OPTARG нужно значение" >&2; exit 1 ;;
esac
done

to_bytes() {
local v="$1"
if command -v numfmt >/dev/null 2>&1; then
numfmt --from=iec "$v"
else
awk -v s="$v" 'BEGIN{
n=s; sub(/[KkMmGgTtPp][Bb]?$/,"",n);
u=""; if (match(s,/[KkMmGgTtPp]/)) u=substr(s,RSTART,1);
m=1; if(u=="K"||u=="k") m=1024;
else if(u=="M"||u=="m") m=1024^2;
else if(u=="G"||u=="g") m=1024^3;
else if(u=="T"||u=="t") m=1024^4;
else if(u=="P"||u=="p") m=1024^5;
printf "%d", n*m
}'
fi
}

human() {
local b="$1"
if command -v numfmt >/dev/null 2>&1; then
numfmt --to=iec --suffix=B "$b"
else
awk -v b="$b" 'function h(x, a,i){
split("B KiB MiB GiB TiB PiB",a," ");
for(i=1; x>=1024 && i<6; i++) x/=1024;
return sprintf("%.1f %s", x, a[i])
} BEGIN{print h(b)}'
fi
}

# Определяем совместимый ключ глубины для du
if du -d 0 / >/dev/null 2>&1; then
DU_DEPTH=(-d "$DEPTH")
else
DU_DEPTH=(--max-depth="$DEPTH")
fi

mkdir -p "$STATE_DIR"
chmod 700 "$STATE_DIR"

# Имя снапшота зависит от пути и глубины
safe_name="$(echo "$PATH_TO" | sed 's|/|_|g; s|^_$|root|')_d${DEPTH}.tsv"
SNAP_FILE="$STATE_DIR/$safe_name"

tmp_cur="$(mktemp)"
trap 'rm -f "$tmp_cur"' EXIT

# Снимок текущих размеров: "path \t bytes"
# -B1: байты, -x: не вылезать на другие ФС, --apparent-size: по желанию (коммент ниже)
# Уберите --apparent-size, если хотите считать выделенные блоки, а не логический размер.
du -B1 "${DU_DEPTH[@]}" -x --apparent-size "$PATH_TO" 2>/dev/null \
| awk 'BEGIN{OFS="\t"} {sz=$1; $1=""; sub(/^[ \t]+/,""); print $0, sz}' \
| sort -k1,1 > "$tmp_cur"

# Если есть предыдущий снимок — считаем дельты
THRESH_BYTES="$(to_bytes "$THRESH")"
printf "📈 Топ %d приростов в %s (глубина %d, порог %s):\n" \
"$TOP" "$PATH_TO" "$DEPTH" "$THRESH"

if [[ -s "$SNAP_FILE" ]]; then
awk -F'\t' -v th="$THRESH_BYTES" '
NR==FNR { prev[$1]=$2; next }
{
cur=$2+0; p=(($1 in prev)?prev[$1]+0:0);
d=cur-p;
if (d>=th) { print $1 "\t" d }
}
' "$SNAP_FILE" "$tmp_cur" \
| sort -k2,2nr \
| head -n "$TOP" \
| awk -F'\t' '{printf " + %-8s %s\n", "'"$(human "$2")"'", $1}' \
|| true
else
echo " (первый запуск — снимаю базовую метрику, сравнивать не с чем)"
fi

# Обновляем снимок
mv -f "$tmp_cur" "$SNAP_FILE"

- Быстрый запуск вручную:

sudo bash du-delta.sh -p /var -d 3 -t 200M -n 20

- Повесить на cron (каждые 6 часов) и писать в syslog:

*/6 * * * * root /usr/local/sbin/du-delta.sh -p / -d 3 -t 200M -n 20 | logger -t du-delta

Хочешь логический размер файлов (как видит ls -l) - оставляй --apparent-size. Нужен именно занятый на диске объём - убери этот флаг.

💡 Начни с -d 2 для обзора верхних уровней, потом точечно спускайся глубже по «подозрительным» каталогам.

👉 @i_odmin
🎯 Шпаргалка по регулярным выражениям (RegEx) Полезно для всех, кто работает с текстом, логами, парсингом или просто хочет стать гуру поиска 🔍 🔤 Символы для сопоставления . …
Читать далее →
1 216
Разжёванный курс по Linux для чайников. Часть 1 0:10 Знакомство с Линух (теория) 2:17:17 Командная оболочка (pwd, ls, touch, date, rm, mkdir, rmdir) 2:56:51 stdout и stderr (пере…
Читать далее →
1 395
Другие главы канала «Системный Администратор | Sysadmin Windows & Linux Server. Настройка Сети, ПК и Железа. IT Уроки для Сисадмина: Безопасность, Софт и Техподдержка (Helpdesk). Компьютерная помощь.»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 22.07.2026
Docker в Mikrotik С выходом MikroTik RouterOS версии 7 появилась поддержка конт…
👁 999 просмотров
Глава от 21.07.2026
Почему в Linux «Всё есть файл»? Или почему гениальные абстракции UNIX настолько …
👁 1 248 просмотров
Глава от 20.07.2026
Разжёванный курс по Linux для чайников. Часть 1 0:10 Знакомство с Линух (теория…
👁 1 395 просмотров
Глава от 19.07.2026
🎯 Шпаргалка по регулярным выражениям (RegEx) Полезно для всех, кто работает с…
👁 1 216 просмотров
Глава от 18.07.2026
Как подготовиться к плановой проверке Роскомнадзора? Читайте в канале КСБ-СОФТ а…
👁 634 просмотров
Глава от 17.07.2026
📌 Шпаргалка для работы с Grafana + Loki! 🔥 🚀 Grafana + Loki — мощный стек для…
👁 1 118 просмотров
Глава от 16.07.2026
⚙️ Systemd: полное руководство для системного администратора systemd - это не п…
👁 1 197 просмотров
Глава от 16.07.2026
🔥 IT-tools - это коллекция удобных инструментов для разработчиков и инженеров пр…
👁 1 251 просмотров
Глава от 16.07.2026
Большинство корпоративных сетей используют VLAN, но многие начинающие специалист…
👁 1 124 просмотров

Популярные посты канала «Системный Администратор | Sysadmin Windows & Linux Server. Настройка Сети, ПК и Железа. IT Уроки для Сисадмина: Безопасность, Софт и Техподдержка (Helpdesk). Компьютерная помощь.»

Сохраняем вывода команды Top в файл Поскольку я не использовал опцию delay, приведенная ниже команда top перенаправит вывод команды top за …
👁 14 419 просмотров
Еще один совет по Linux на сегодня💡 🔒 Заблокировать аккаунт пользователя: $ passwd -l имя_пользователя 🔍 Проверить статус аккаунта: $ pa…
👁 14 208 просмотров
Олды тут? Пост ностальгии... — Процессор — 80286 12MHz — 1MB RAM — HDD — 2x20 MB — Стальной корпус с толщиной стенки примерно 2мм 👉 @i_o…
👁 14 116 просмотров
Быстрый совет по Linux💡 Используй команду touch вот так: $ touch -c имя_файла Таким образом, будет обновлён временной штамп существующего…
👁 14 045 просмотров
Приветствую, коллеги! Мне бы хотелось с вами обсудить как работает интернет от кабелей на витой паре, соединяющие простые локальные сети до …
👁 14 033 просмотров
🛠 Полезные команды Linux для работы с текстом Сохрани в закладки 📌 — часто нужные, но легко забываются. 🔹 Просмотр содержимого и базов…
👁 13 997 просмотров
🧰 Веб-интерфейс для управления Nginx Возможности 🔹Онлайн-статистика по серверным метрикам: загрузка CPU, использование памяти, средняя на…
👁 13 939 просмотров
SadServers — это онлайн-платформа для практики администрирования Linux-серверов. Сайт предоставляет реальные задачи, связанные с системным…
👁 13 927 просмотров
Прохождение IP пакета между сетями Подробно описан процесс прохождения пакета между сетями, его структура и объяснено назначение основных п…
👁 13 917 просмотров
Linux - Как Писать Скрипты - Пишем Конфигурируемый Скрипт источник 👉 @i_odmin
👁 13 903 просмотров
👩‍💻 Поиск в vim • set ignorecase — игнорирует регистр • set smartcase — поиск со смешанным регистром 👉 @i_odmin
👁 13 838 просмотров
Извлекаем файлы из образа повреждённого диска: ddrescue, losetup и немного магии Проблема повреждённых жёстких дисков знакома многим. Диск …
👁 13 809 просмотров
🎯 Шпаргалка по регулярным выражениям (RegEx) Полезно для всех, кто работает с текстом, логами, парсингом или просто хочет стать гуру поис…
👁 13 800 просмотров
mRemoteNG Это мощный, многопротокольный менеджер удалённых подключений с открытым исходным кодом. С помощью mRemoteNG можно централизов…
👁 13 724 просмотров
Залипательно 👍 👉 @i_odmin
👁 13 703 просмотров
📌Основы сетей без лишней сложности! Тред из 20 ключевых сетевых концепций с 1 по 10 👇 1/20: 🔗 Понимание IP-адресов IP-адрес — это как н…
👁 13 687 просмотров
На злобу дня 😂 👉 @i_odmin
👁 13 651 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 13 650 просмотров
⌨️ Станьте экспертом по сетям ЦОД: проектируйте инфраструктуру для ИИ и облаков Курс «Дизайн сетей ЦОД» в OTUS научит проектировать надёжны…
👁 13 601 просмотров
MobaXterm Это мощный инструмент для удаленного администрирования, который сочетает в себе SSH-клиент, терминал и множество сетевых утилит. …
👁 13 572 просмотров

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@club_209372
РОБЛОКС
РОБЛОКС ROBLOX мир скрипты на коды чит новый режим Steal a Brainrot Grow a garden 2 99 ночей в лесу Murder Mystery Брукхевен поззи робзи рб квинка queen робуксы подарок р…
👥 226 531 · +3 848/7д
@batek_o
БАТЕК_OFFICIAL
ТУТ ЮМОР номер заявления № 7057884042
👥 198 562 · +7 232/7д
@bloodysx
Кровавая Барыня
Номер заявки для регистрации в РКН: №7411719557
👥 168 566 · +503/7д
@martynovevgueni
ЗдравКонтроль
Первый медицинский на МАКС! Канал для тех, у кого есть полис ОМС! Аудитория проекта в МАКС и Телеграм 1 млн. + Защита прав пациентов и врачей. Официальный канал проекта…
👥 149 130 · +2 347/7д
@biohakrs
Биохакеры Здоровье Биохакинг
Наконец-то нормальный канал про биохакинг, а не это вот всё. Здоровье биохакинг витамин D3 магний цинк витамин C витамин B омега-3 мозг стресс кортизол эндорфин анализы…
👥 116 008
@nebozhena
НЕБОЖЕНА
Персональный пародийный аккаунт Номер заявления в РКН: № 7411891711
👥 112 111 · -1 037/7д
🏷 Темы и теги
#windows server #linux администрирование #настройка сети #cisco mikrotik #скрипты bash #it уроки #Медицина
📋 О канале Системный Администратор | Sysadmin Windows & Linux Server. Настройка Сети, ПК и Железа. IT Уроки для Сисадмина: Безопасность, Софт и Техподдержка (Helpdesk). Компьютерная помощь.
Купить рекламу: https://telega.in/m/i_odmin

Блог практикующего админа. Настройка Windows Server, Active Directory (AD), GPO и терминальных серверов (RDP). Работа с Linux: Ubuntu, CentOS, Debian. Сетевое оборудование: Cisco, MikroTik, VPN, DNS, DHCP. Виртуализация (Hyper-V, VMware, Proxmox) и резервное копирование (Backup). Скрипты PowerShell и Bash. Диагностика железа, сборка ПК, ремонт и монитор
🔍 Архив всех постов Макс
Поиск по 12,966,497 постам из 202,059 каналов
Подключить за 490 ₽/мес →
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
📊 Аналитика канала «Системный Администратор | Sysadmin Windows & Linux Server. Настройка Сети, ПК и Железа. IT Уроки для Сисадмина: Безопасность, Софт и Техподдержка (Helpdesk). Компьютерная помощь.» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.