#!/usr/bin/env bash
# Hostfera: collect filesystem diagnostics without changing files.
set -uo pipefail
[[ $# -le 1 ]] || { echo 'Использование: sudo bash hostfera-disk-report-1.0.0.sh /путь' >&2; exit 1; }
TARGET=$(realpath -e -- "${1:-/var}") || exit 1
[[ -d $TARGET ]] || { echo 'Укажите существующий каталог.' >&2; exit 1; }
printf 'HOSTFERA / ДИАГНОСТИКА ДИСКА\nUTC: %s\nКаталог: %s\n' "$(date -u +%FT%TZ)" "$TARGET"
printf '\n== Файловая система и свободные блоки ==\n'
df -hT -- "$TARGET"
printf '\n== Свободные inode ==\n'
df -i -- "$TARGET"
printf '\n== Каталоги первого уровня в этой файловой системе ==\n'
du -x -h --max-depth=1 -- "$TARGET" 2>&1 | sort -h
printf '\n== Удалённые файлы, которые ещё открыты процессами ==\n'
if command -v lsof >/dev/null; then
  lsof +L1 2>/dev/null | head -n 30 || true
else
  printf 'lsof не установлен. При необходимости установите пакет lsof.\n'
fi
printf '\n== Объём журнала systemd ==\n'
if command -v journalctl >/dev/null; then journalctl --disk-usage; fi
printf '\nОтчёт собран. Сопоставьте устройство, блоки, inode и открытые файлы.\n'
