Для подписчиковДавненько я не писал подборок утилит! В этом выпуске «мастерской» — инструменты для разгребания файлохранилищ, отладки неразговорчивых программ и работы с логами. Готовь терминал и присаживайся поудобнее!
Давненько я не писал подборок утилит! В этом выпуске «мастерской» — инструменты для разгребания файлохранилищ, отладки неразговорчивых программ и работы с логами. Готовь терминал и присаживайся поудобнее!
gduGdu (Go DiskUsage) — это мощный инструмент для разгребания завалов в файловой системе. Он быстро сканирует заданную директорию рекурсивно и строит удобный интерактивный TUI-интерфейс, где можно перемещаться по дереву папок и удалять ненужные.
Ближайший аналог gdu для Windows — программа WinDirStat.
Устанавливается gdu простым скачиванием бинарника с GitHub:
curl -L https://github.com/dundee/gdu/releases/latest/download/gdu_linux_amd64.tgz | tar xz
chmod +x gdu_linux_amd64
sudo mv gdu_linux_amd64 /usr/bin/gdu
Запуск gdu без аргументов заставит программу анализировать текущую директорию.
Сканирование может занять какое‑то время. И оно не будет выглядеть как зависаниеНа сканирование ~200 Гбайт данных требуется чуть меньше четырех секунд — скорость на уровне!
После сканирования открывается интерактивное дерево файловой системы, где можно посмотреть, сколько суммарно что занимает.
Дерево ФСАльтернатива — прямой запуск через Docker:
docker run --rm --init --interactive --tty --privileged --volume /:/mnt/root ghcr.io/dundee/gdu /mnt/root
Встроенная справка весьма информативна и в особых комментариях не нуждается, но я все же отмечу несколько важных хоткеев:
r пересканирует текущую папку;
b открывает терминал в текущей папке (exit потом вернет обратно в gdu);
d удаляет выбранный элемент, а пробелом можно выбрать несколько, чтобы удалить списком.
Gdu поддерживает неинтерактивный режим и умеет выводить результаты в JSON на случай использования в каком‑то внешнем пайплайне (например, выводить самые крупные файлы в уведомлении о переполнении диска). Вот, например, сохранение отчета в сжатый JSON из документации проекта:
gdu -o- / | gzip -c >report.json.gz
Для прочтения отчета:
zcat report.json.gz | gdu -f-
snapdiff
Для сравнения текстовых файлов удобно использовать diff. Но что, если нужно сравнить содержимое не двух файлов, а двух бэкапов на десятки тысяч файлов каждый? Оказывается, утилита есть и для этого, и называется она snapdiff.
Основной сценарий использования — сравнивать регулярные снапшоты файловой системы. По умолчанию программа выводит только общую статистику (сколько всего данных, сколько общих, сколько добавлено, удалено или изменено), но есть ключ --report, который покажет все неидентичные файлы.
Snapdiff написан на Rust, и для установки понадобится компилятор версии минимум 1.70.0. Установить его можно с помощью однострочника:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Дальше склонируй репозиторий с кодом и собери бинарник:
git clone https://github.com/jotaen/snapdiff.git
cargo build --release
# Бинарник окажется в target/release/snapdiff
Теперь можно запускать! Чтобы сравнить /mnt/backup/snap1 и /mnt/backup/snap2, используй snapdiff /mnt/backup/snap1 /mnt/backup/snap2.
SnapdiffКлюч --report report.txt позволяет получить подробный список неидентичных файлов. Используй его, если делаешь автоматический пайплайн для инкрементальных бэкапов или чего‑то такого.
Когда копируешь большие файлы (например, бэкапы), может показаться, что процесс копирования завис, а 10% прогресса визуально никак не отличаются от 95%. Исправлять это досадно раздражающее недоразумение изменением самих утилит копирования/перемещения было бы неправильно: все же слишком много сторонних скриптов на них завязано и внезапная смена поведения точно не пойдет им на пользу.
Компромиссное решение было найдено уже больше десяти лет назад в утилите cv, теперь более известной под названием progress. Она умеет показывать прогресс выполнения для большого количества команд из пакета coreutils, в который входят не только cp и mv, но и tar, gzip, cat, dd и прочие. Изменять флаги при вызове этих команд не нужно — progress умеет показывать статус в стандартной конфигурации.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Мастерская хакера. Стресс-тестинг сайтов, бенчмарк для команд, работа с текстом и другие полезности | 2 | 7 | 23-10-2025 |
| 2 | Регулируй регулярки! Выбираем инструменты для работы с RegEx | 5 | 7 | 25-11-2025 |
| 3 | Шабаш в баше. Учимся автоматизировать действия в командной строке и применять мощные утилиты | 5 | 7 | 23-07-2025 |
| 4 | Материалы по хакингу на русском | 5 | 7 | 07-07-2026 |
| 5 | Заразил 100 компьютеров, но кого грабить первым? Новый вирус Dolphin X решает главную проблему «уставших» взломщиков | 0 | 13.85 | 24-07-2026 |
| 6 | Организовал весь пентест-арсенал в одном месте: всё под рукой, офлайн и на русском | 5 | 7 | 28-06-2026 |
| 7 | Ручная ищейка. Делаем свой Google для локальной сети | 0 | 7 | 12-08-2025 |
| 8 | Маркетинговые уловки Linux: Как CachyOS вводит пользователей в заблуждение | -2 | 6 | 07-07-2026 |
| 9 | Андроиды с root! Зачем рутовать Android в 2025 году | 5 | 7 | 02-07-2025 |
| 10 | [Перевод] Рисуем ASCII-арт в Vim | 0 | 8.82 | 24-07-2026 |