Утилита подсчета размера директорий

в 22:45, , рубрики: Go

Утилита подсчета размера директорий

Добрый день!
При разработке или администрировании на ОС Windows раз в полгода, год, пару лет возникает задача почистить диск от накопившихся логов, временных файлов, устаревших дистрибутивов и т.п. мусора.
Меня все-таки "достала" необходимость вручную ходить по папкам, подпапкам и пытаться найти кто же все-таки занимает пространство. Так появилась утилита командной строки diskusage.

Как она работает:

  1. Запускаем утилиту

    diskusage.exe -path "C:/Temp; D:/" -limit 20

    Перечисляем в path директории для сканирования через ";" и в limit (опциональный параметр) указываем количество директорий наибольшего размера, которые будут выведены в консоль.

  2. Получаем на выходе:
    Start scanning
    Checking folders: [f:/temp]
    List of 20 max size folders:
    1.| DIR: f:/temp                      | SIZE: 639.52 Gb
    2.| DIR: f:/temp/NATURAL              | SIZE: 584.60 Gb
    3.| DIR: f:/temp/NATURAL/MDM          | SIZE: 455.92 Gb
    4.| DIR: f:/temp/NATURAL/MDM/LIB_CMP  | SIZE: 226.99 Gb
    5.| DIR: f:/temp/NATURAL/MDM/LIB_GB   | SIZE: 95.61 Gb
    6.| DIR: f:/temp/NATURAL/MDM/LIB_HF   | SIZE: 65.51 Gb
    7.| DIR: f:/temp/SPLOK                | SIZE: 952.30 Mb
    ...
    20. | | |
    Finish scanning
    Total time: 31.5670085s

Некоторые особенности работы:

  • Сделано для windows, в unix наверняка достаточно написать одну строку bash, чтобы получить размеры директорий (напишите в комментариях — так ли это).
  • Выбор максимальных n-директорий осуществляется среди всех директорий и поддиректорий, входящих в -path.
  • Файлы в результаты не попадают! Только директории.
  • Размерность в результатах (Kb, Mb, Gb, ...) выбирается динамически, исходя из размера директории. Внутри есть ограничение верхней границы размерности до Gb (то есть Tb в результатах вы не увидите), но когда-нибудь сделаю это входным параметром. Это важно, например, если вы заходите получить точные размеры директорий, тогда размерность должна быть указана в байтах.
  • Для упрощения анализа результатов рекомендую сделать bat-файл с выводом результатов в txt-файлик. Подробности на странице проекта.
  • Вывод в Go выполняется в unix-кодировке, поэтому смотреть результаты удобно в Notepad++ (пожалуй тоже надо переделать, но пока меня не напрягает, а вот если вам понадобится...)

Релиз для винды здесь.

Пишите отзывы — полезная штука или нет очень полезная?

Автор: ювелир

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js