Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Мастерская хакeра. Лезем в недра системы и работаем с файлами

Дата публикации: 23-04-2026 13:30:41

Для подписчиковДавненько я не писал подборок утилит! В этом выпуске «мастерской» — инструменты для разгребания файлохранилищ, отладки неразговорчивых программ и работы с логами. Готовь терминал и присаживайся поудобнее!

Основное содержимое страницы с новостью.

Дав­нень­ко я не писал под­борок ути­лит! В этом выпус­ке «мас­тер­ской» — инс­тру­мен­ты для раз­гре­бания фай­лох­ранилищ, отладки нераз­говор­чивых прог­рамм и работы с логами. Готовь тер­минал и при­сажи­вай­ся поудоб­нее!

gdu

Gdu (Go DiskUsage) — это мощ­ный инс­тру­мент для раз­гре­бания завалов в фай­ловой сис­теме. Он быс­тро ска­ниру­ет задан­ную дирек­торию рекур­сивно и стро­ит удоб­ный инте­рак­тивный TUI-интерфейс, где мож­но переме­щать­ся по дереву папок и уда­лять ненуж­ные.

WinDirStat

Бли­жай­ший ана­лог 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.

SnapdiffSnapdiff

Ключ --report report.txt поз­воля­ет получить под­робный спи­сок неиден­тичных фай­лов. Исполь­зуй его, если дела­ешь авто­мати­чес­кий пай­плайн для инкре­мен­таль­ных бэкапов или чего‑то такого.

progress

Ког­да копиру­ешь боль­шие фай­лы (нап­ример, бэкапы), может показать­ся, что про­цесс копиро­вания завис, а 10% прог­ресса визу­аль­но никак не отли­чают­ся от 95%. Исправ­лять это досад­но раз­дра­жающее недора­зуме­ние изме­нени­ем самих ути­лит копиро­вания/переме­щения было бы неп­равиль­но: все же слиш­ком мно­го сто­рон­них скрип­тов на них завяза­но и вне­зап­ная сме­на поведе­ния точ­но не пой­дет им на поль­зу.

Ком­про­мис­сное решение было най­дено уже боль­ше десяти лет назад в ути­лите cv, теперь более извес­тной под наз­вани­ем progress. Она уме­ет показы­вать прог­ресс выпол­нения для боль­шого количес­тва команд из пакета coreutils, в который вхо­дят не толь­ко cp и mv, но и tar, gzip, cat, dd и про­чие. Изме­нять фла­ги при вызове этих команд не нуж­но — progress уме­ет показы­вать ста­тус в стан­дар­тной кон­фигура­ции.

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Мастерская хакера. Стресс-тестинг сайтов, бенчмарк для команд, работа с текстом и другие полезности2723-10-2025
2Регулируй регулярки! Выбираем инструменты для работы с RegEx5725-11-2025
3Шабаш в баше. Учимся автоматизировать действия в командной строке и применять мощные утилиты5723-07-2025
4Материалы по хакингу на русском5707-07-2026
5Заразил 100 компьютеров, но кого грабить первым? Новый вирус Dolphin X решает главную проблему «уставших» взломщиков013.8524-07-2026
6Организовал весь пентест-арсенал в одном месте: всё под рукой, офлайн и на русском5728-06-2026
7Ручная ищейка. Делаем свой Google для локальной сети0712-08-2025
8Маркетинговые уловки Linux: Как CachyOS вводит пользователей в заблуждение-2607-07-2026
9Андроиды с root! Зачем рутовать Android в 2025 году5702-07-2025
10[Перевод] Рисуем ASCII-арт в Vim08.8224-07-2026

Классификация: Мнения. Схожих патентов: 0. Схожих новостей: 10. Тональность: 5. Информативность: 7. Источник: xakep.ru.