LINUX.ORG.RU

Ncdu 1.21 и 2.7

 , , , ,

Ncdu 1.21 и 2.7

1

1

19 ноября состоялись выпуски 1.21 и 2.7 утилиты ncdu (NCurses Disk Usage) для анализа использования диска с текстовым пользовательским интерфейсом.
Утилита написана на языках C (версия LTS) и Zig (версии 2.*) с использованием библиотеки ncurses и распространяется по лицензии MIT.
Zig-версия отличается добавлением многопоточного сканирования и новым двоичным форматом (со встроенным сжатием) экспорта результатов сканирования.

Список общих изменений:

  • развёртывание ~ и ~user в файле конфигурации;
  • исправлен импорт из JSON с экранированными суррогатными парами в формате UTF-16.

Список изменений в версии 1.21:

  • исправлены отображение и экспорт нулевых значений, когда расширенная информация недоступна;
  • исправлены экспорт и импорт JSON для флага «другая файловая система».

Список изменений в версии 2.7:

  • для компиляции по-прежнему требуется Zig 0.12 или 0.13;
  • добавлена поддержка прозрачного чтения и записи JSON, сжатого алгоритмом zstandard;
  • добавлены опции --compress и --export-block-size;
  • исправлено некорректное поле в корневом элементе при экспорте в двоичный формат;
  • добавлена опция сборки -Dstrip.

>>> Подробности

★★★★★

Проверено: CrX ()
Последнее исправление: dataman (всего исправлений: 2)
Ответ на: комментарий от Werenter

Тем, что показывает занятый, а не свободный объём.

Но и от du -h тоже отличается: интерактивностью (можно например удалять файлы), показом процентов и полосочек, сортировкой по занятому объёму.

Мне в этом плане, впрочем, гораздо больше нравится dust. Интерактивности там нет (да она и не нужна), зато он красивое дерево рисует, нужной вложенности. Нагляднее как-то.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от CrX

Мне в этом плане, впрочем, гораздо больше нравится dust. Интерактивности там нет

Если на Расте, то она есть в https://github.com/Byron/dua-cli.
Там же есть некоторые аналоги.

красивое дерево рисует

Например, https://github.com/KSXGitHub/parallel-disk-usage (тоже Раст).

dataman ★★★★★
() автор топика

Хоровая тульзень. Позволяет неокрепшим в консоли юзерам посмотреть сколько они там нагадили и где это все находится. Ну а мне, в общем-то, в большинстве случаев «du -h -d 1» хватает.

iron ★★★★★
()

она уже стала бысрее gdu?

sn
()

Хорошая утилита, но не обязательна. Вспомнил про нее только прочитав новость. Пользуюсь редко. А так красиво, быстро, интерактивно.

dmitry237 ★★★★
()

Перешёл по возможности на gdu, т.к заметно быстрее работает. Но не везде есть в репозиториях

overmind88 ★★★★★
()
Ответ на: комментарий от greenman

Хоровая. Хором с другими утилитами юзаешь и получается гармония. Хотя и солирует тоже нормально. :)

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)

Чем это лучше nnn -Td ?

Turbid ★★★★★
()
Ответ на: комментарий от greenman

Так хорошая или наоборот?)

Хорошая. Глаза слипались, недосмотрел).

iron ★★★★★
()
Ответ на: комментарий от Bfgeshka

Меня удивляет, что автор использует ncurses и в Zig-версии. Вроде бы для Zig есть неплохие TUI-библиотеки без сторонних зависимостей.
Но могу ошибаться. :)

dataman ★★★★★
() автор топика

Я baobab использую, не жалуюсь

SL_RU ★★★★
()

Автору респект. Полезные тулзы постит всегда.

По сабжу:

du -ah /home | sort -rh | head -n 20 хватит всем! (с)

Еще шикарная штука dua i (классная тем, что делает то же самое, что и gdu, только весит почти в шесть раз меньше).

Gonzo ★★★★★
()
Последнее исправление: Gonzo (всего исправлений: 1)

оно только по дире смотрит? я могу натравить, например, на debian/pool и увидеть все самые жирные файлы в поддиректориях?

alt-tab-let ★★
()

Чем это лучше broot --sort-by-size?

neumond
()

Zig-версия отличается добавлением многопоточного сканирования

ну что за бездари это пишут. Там же затык явно в сисколлах - ну так и вызывай их асинхронно, через io-uring или еще как. А если нужного сисколла нет в uring, отправь патч в ядро и добавь.

Я даже хотел лично это сделать, но после всей этой херни в ядре естественно не буду.

Lrrr ★★★★★
()

2 всем чем_это_лучше_X: а в X есть экспорт/импорт результатов сканирования?

dataman ★★★★★
() автор топика
Ответ на: комментарий от irton

говорят не стало выделения цветом (в версии 1.19 было)

Да, автор сам пишет:

Colors
Ncdu has had color support since version 1.13. Colors were enabled by default in 1.17 and 2.0, and then later disabled again in 1.20 and 2.4 because the text was not legible in all terminal configurations. If you do prefer the colors, add –color=dark to your config file. Maybe at some point in the future we’ll have colors that are readable in every setup.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Ну да, зеленый курсор не очень удачно. Особенно, когда реальный цвет зависит от настроек терминала.

dmitry237 ★★★★
()
Ответ на: комментарий от Lrrr

ну что за бездари это пишут

В std Zig уже есть порт liburing на Zig. Если у автора сабжа нет опыта использования этого API, зачем же обзываться? :)

А если нужного сисколла нет в uring, отправь патч в ядро и добавь.
Я даже хотел лично это сделать

Уже не нужно, например: В утилиту bfs добавлена возможность использования liburing.

dataman ★★★★★
() автор топика

«Энкиду (Энки создал) – бог-рыбак, слуга бога Энки (владыка земли). Бог-покровитель Великой Лотереи. Заботится о прудах и каналах; кроме того, известны обращенные к Энкиду заговоры от различных болезней пищеварительного тракта. Создан из глины, как ветхозаветный Адам, – считалось, что глиняные таблички с вопросами Лотереи есть плоть Энки, а ритуальный напиток, изготовлявшийся в его храме, – его кровь».

BACR
()
Ответ на: комментарий от Stil

$ man ncdu

EXAMPLES
       To scan and browse the directory you're currently in, all you need is a simple:
             ncdu
       If you want to scan a full filesystem, for example your root filesystem, then you'll want to use -x:
             ncdu -x /

       Since scanning a large directory may take a while, you can scan a directory and export the results for later viewing:

             ncdu -1xo- / | gzip >export.gz
             # ...some time later:
             zcat export.gz | ncdu -f-
       To export from a cron job, make sure to replace -1 with -0 to suppress any unnecessary output.

       You can also export a directory and browse it once scanning is done:
             ncdu -o- | tee export.file | ./ncdu -f-
       The same is possible with gzip compression, but is a bit kludgey:
             ncdu -o- | gzip | tee export.gz | gunzip | ./ncdu -f-

       To scan a system remotely, but browse through the files locally:
             ssh -C user@system ncdu -o- / | ./ncdu -f-
       The  -C  option  to  ssh enables compression, which will be very useful over slow links.  Remote scanning and local viewing has two major advantages when compared to running ncdu directly on the remote system: You can browse through the scanned directory on the local system without any network latency, and ncdu does not keep the entire  directory  structure  in memory when exporting, so this won't consume much memory on the remote system.
dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

зачем ncdu в кроне я вообще не понял, «сканирование больших директорий занимает время» звучит как «на моем пк ещё не придумали tmux», ssh - ok.

Stil ★★★★★
()
Ответ на: комментарий от Stil

Ну можно использовать для создания JSON-«DB» файлов.
Например, $ ncdu2 -o aaa:

[1,2,{"progname":"ncdu","progver":"2.7","timestamp":1732264451},
[{"name":"/home/dataman/Projects/Zig/ncdu","asize":162,"dev":37,"uid":1000,"gid":1000,"mode":16877,"mtime":1732264451},
[{"name":".git","asize":176,"uid":1000,"gid":1000,"mode":16877,"mtime":1732261273},
[{"name":"branches","uid":1000,"gid":1000,"mode":16877,"mtime":1524056868}],
[{"name":"hooks","asize":414,"uid":1000,"gid":1000,"mode":16877,"mtime":1524056868},
{"name":"applypatch-msg.sample","asize":478,"dsize":4096,"uid":1000,"gid":1000,"mode":33261,"mtime":1524056868},
...

Или с -e:

[1,2,{"progname":"ncdu","progver":"2.7","timestamp":1732264728},
[{"name":"/home/dataman/Projects/Zig/ncdu","asize":162,"dev":37,"uid":1000,"gid":1000,"mode":16877,"mtime":1732264451},
[{"name":".git","asize":176,"uid":1000,"gid":1000,"mode":16877,"mtime":1732261273},
[{"name":"branches","uid":1000,"gid":1000,"mode":16877,"mtime":1524056868}],
[{"name":"hooks","asize":414,"uid":1000,"gid":1000,"mode":16877,"mtime":1524056868},
{"name":"applypatch-msg.sample","asize":478,"dsize":4096,"uid":1000,"gid":1000,"mode":33261,"mtime":1524056868},
...
dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)

Заменил скриншот: исходники linux-6.12 и опции -e --color=dark.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

А зачем mode в отчете в десятичном формате, чтобы потом получить тип файла?

[flags()] enum access
{
    File            = 32768
    Directory       = 16384
    CharacterDevice = 8630 
    SymLink         = 8192
    NamedPipe       = 4096
    SUID            = 2048
    SGID            = 1024
    StickyBit       = 512
    ReadOwner       = 256
    WriteOwner      = 128
    ExecuteOwner    = 64
    ReadGroup       = 32
    WriteGroup      = 16
    ExecuteGroup    = 8
    ReadAll         = 4
    WriteAll        = 2
    ExecuteAll      = 1
}             

[access] 33261
ExecuteAll, ReadAll, ExecuteGroup, ReadGroup, ExecuteOwner, WriteOwner, ReadOwner, File
dmitry237 ★★★★
()
Ответ на: комментарий от dmitry237

А зачем mode в отчете в десятичном формате

Без понятия, сам впервые попробовал. :)

dataman ★★★★★
() автор топика

Подумал сделать форк с termbox2 или notcurses вместо ncurses, и назвать его tdu. Но оказалось, что такая утилита уже есть. Вот незадача! :)

https://github.com/dse/tdu (C, glib, ncurses, GPL-2.0):

tdu is a text-terminal program that displays disk space utilization in an interactive full-screen folding outline. Branches of the tree may be hidden or displayed, and files/directories in a branch can be sorted by filename or total space utilized.

tdu uses the ncurses library to interact with the terminal; unlike most disk usage visualization programs, it does not require the X Window System. It is therefore ideal in situations where you’re logged in to a remote Unix system and for various reasons you do not wish to run an X program such as xdu remotely or copy the output of du over the network.

Like the classic xdu utility, tdu does not traverse a directory tree computing disk usage itself; it requires a program such as du to provide that information.

Но ей нужны du и dugroup (Perl), что сразу не понравилось.

dataman ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.