В предновогодних инсайдерских сборках 20277 и 21277 появилась консольная утилита diskusage для анализа дискового пространства. Сегодня я разберу некоторые нюансы работы новой утилиты и поделюсь с вами результатами ее испытаний в сравнении с утилитой dfp.
В итоге утилита diskusage вошла в состав уже Windows 11. Однако она работает и в Windows 10, если перекинуть в нее исполняемый файл и MUI-ресурсы (проверялось на 20H2).
[+] Сегодня в программе
- Параметры командной строки и примеры команд
- Преимущества и особенности diskusage
- Определение размера системных файлов и зарезервированного пространства
- Переход по символическим ссылкам и соединениям
- Подсчет размера только одной жесткой ссылки
- Анализ файлов
- Фильтры по именам и размерам
- Вывод столбцов с датами создания, изменения и доступа
- Скорость работы и результаты анализа
- Подсчет размера папок с учетом и без учета жестких ссылок
- Заключение
Параметры командной строки и примеры команд
Утилита обладает развесистым списком ключей, причем в двух вариантах (для публикации я выбрал длинные, но понятные). Здесь ключи на момент выпуска предварительной версии, а ниже — по состоянию на январь 2024 года.
Если путь не указан, по умолчанию утилита рекурсивно сканирует начиная с текущей папки. Отмечу, что я практически всегда использовал ключ /humanReadable
помимо прочих. Он отображает размеры в GB/MB нежели только в байтах
В справке не хватает примеров, но я восполню пробел этой статьей. Парочка для затравки:
- Показать 25 самых больших папок на диске C.
diskusage C:\ /TopDirectory=25 /humanReadable
- Показать 30 самых больших файлов в папке Загрузки наряду с датой их создания.
diskusage "%userprofile%\Downloads\" /TopFile=30 /displayFlag=0x080 /humanReadable
Преимущества и особенности diskusage
Отмечу несколько нюансов diskusage в сравнении с dfp, которая давно исключена из поставки Windows, хотя до сих пор прекрасно работает и входит в мой арсенал.
Определение размера системных файлов и зарезервированного пространства
На смену ключу /systemAndReserve пришли два: /systemFile[:N] для отображения служебных системных файлов и /reserved для зарезервированного пространства.
Ключ /systemFile[:N] отображает служебные системные файлы. В отчет входят служебные файлы NTFS, что очень похоже на вывод утилиты fsutil. Этот ключ также закрыл вопрос с теневыми копиями, которые утилита изначально могла отображать только при запуске от имени системы. Пути вида C:\{GUID}{GUID}
— это теневые копии.
diskusage /systemFile:12 /humanReadable ----------------Top 12 System Files--------------- SizeOnDisk File path 3,738,058,752 ( 3.5 GB) c:\{ee1c76e7-b44a-11ee-b78a-3c77e6ed0d46}{3808876b-c176-4e48-b7ae-04046e6cc752} 2,046,820,352 ( 1.9 GB) c:\{eb67af63-b5df-11ee-b78a-3c77e6ed0d46}{3808876b-c176-4e48-b7ae-04046e6cc752} 1,560,461,312 ( 1.5 GB) c:\{1906a4f5-b118-11ee-b78a-3c77e6ed0d46}{3808876b-c176-4e48-b7ae-04046e6cc752} 981,868,544 (936.4 MB) c:\$MFT 67,108,864 ( 64.0 MB) c:\$LogFile 63,881,216 ( 60.9 MB) c:\{ee1c76cb-b44a-11ee-b78a-3c77e6ed0d46}{3808876b-c176-4e48-b7ae-04046e6cc752} 40,566,784 ( 38.7 MB) c:\$UsnJrnl 16,777,216 ( 16.0 MB) c:\002B00000000F1132794A206 16,777,216 ( 16.0 MB) c:\004F000000047BB9718D042E 16,777,216 ( 16.0 MB) c:\006F000000003D9A65CA4DDC 15,265,792 ( 14.6 MB) c:\$Secure 10,485,760 ( 10.0 MB) c:\$TxfLogContainer00000000000000000028 8,750,514,176 ( 8.1 GB) [System Files] System files summary: 1,719 files, 2,380 directories 227,147,239,424(211.5 GB)/255,412,137,984(211.5 GB) 88.9% of disk in use
Ключ /reserved не срабатывает в сочетании с некоторыми другими. Если смотреть отдельно, быстрее всего натравить утилиту на пустую папку.
diskusage C:\new /reserved /humanReadable SizeOnDisk Files Directory path 0 ( 0.0 KB) 0 C:\new 5,424,865,280 ( 5.1 GB) 0 [Reserved Space] 227,139,883,008(211.5 GB)/255,412,137,984(211.5 GB) 88.9% of disk in use
У меня в одной из систем объем зарезервированного пространства по сведениям утилиты отличается от цифры в параметрах. Однако он почти совпадает с объёмом первой из трёх зарезервированных областей.
Об устаревшем ключе /systemAndReserve
Ключ /systemAndReserve. Логично было бы добавлять этот параметр к первоначальному сканированию системного диска, но пока ключ не срабатывает в сочетании с некоторыми другими. Если смотреть отдельно, быстрее всего натравить утилиту на пустую папку.
diskusage C:\new /systemAndReserve /humanReadable SizeOnDisk Files Directory path 0 ( 0.0 KB) 0 C:\new 20 293 710 083 ( 18.9 GB) 47 [System Files and Reserved Space] 168 317 841 408(156.8 GB)/254 588 350 464(156.8 GB) 66.1% of disk in use
Сведения отображаются в конце вывода. Утилита показывает 18.9GB. Это сильно расходится со сводкой в Параметрах, но картина проясняется при изучении подробностей.
Судя по всему, значение складывается из размера зарезервированного пространства и теневых копий (точек восстановления). Объем зарезервированного пространства и так можно посмотреть из консоли с fsutil, см. статью по ссылке↑ А к теневым копиям я еще вернусь.
Переход по символическим ссылкам и соединениям
Утилита умеет подсчитывать размер папок, в которые ведут символические ссылки и соединения. Изначально это было поведением по умолчанию, а выключалось оно ключом /skipReparse. На мой взгляд, стоило сделать наоборот. У меня при первом тестовом запуске diskusage полезла в теневые копии по ссылке, что сделало анализ бесполезным :)
Upd. Действительно, впоследствии стали игнорировать символические ссылки и соединения, для явного перехода по ним добавили ключ /reparse, а ключ /skipReparse убрали из справки.
Не самая ценная фича для анализа отдельно взятого диска, но сценарии под нее найдутся, наверное.
Подсчет размера только одной жесткой ссылки
Утилита dfp ведет себя так же. Однако diskusage умеет считать и размер всех жестких ссылок с ключом /allLinks. Большой практической ценности это не несет, но для исследований бывает полезно. Ниже я разверну этот тезис на примере.
Анализ файлов
Ключ /TopFile. Он позволяет выявить самые большие файлы. В утилите dfp для анализа на уровне файлов служит ключ /all.
Фильтры по именам и размерам
Ключи /nameFilter для имен и /minSizeOnDisk, /minFileSize для размеров папок. Другими словами, можно выводить папки и/или файлы, размер которых превышает заданный порог.
Топ-5 файлов размером более 10GB:
diskusage E:\Movies /minSizeOnDisk=10000000000 /TopFile=5 /humanReadable
Топ-5 файлов mp4:
diskusage E:\Movies /nameFilter=*.mp4 /TopFile=5 /humanReadable
Вывод столбцов с датами создания, изменения и доступа
Ключ /displayFlag. Пример в начале статьи.
Пожалуй, последние три пункта в списке наиболее полезны на практике. Из остального отмечу вывод в формате CSV и параметры запуска в… INI-файле, в 2021 году:)
Замечу, что в отличие от dfp, в новой утилите нет снимков, позволяющих быстро выявлять повторно засоряющиеся папки.
Скорость работы и результаты анализа
Практическое сравнение показало высокую скорость работы diskusage и более осмысленные результаты.
У меня подход к анализу с dfp простой — сначала я рекурсивно анализирую топ-25 из корня диска, потом выбираю папки из топа для более пристального изучения. Это обусловлено тем, что при первом запуске много капитанства – корень диска, папки Windows, Users и т.д.
На моем системном диске занято 150GB. Первичный анализ dfp занял 111 секунд.
dfp /b /top 25 /elapsed /study {largest} C:\ Size On Disk Files Folders Path 137.5G 658033 158499 C:\ 64.1G 226614 43550 C:\Users 63.0G 217951 37544 C:\Users\Vadim 34.1G 7360 426 C:\Users\Vadim\Downloads 24.1G 301184 96431 C:\Windows 15.9G 198613 34846 C:\Users\Vadim\AppData 12.8G 174917 31220 C:\Users\Vadim\AppData\Local 11.6G 31 17 C:\System Volume Information 10.7G 97674 12828 C:\Program Files 10.3G 695 328 C:\Users\Vadim\Documents 9.8G 13018 3422 C:\ProgramData 9.1G 76806 37420 C:\Windows\WinSxS 8.1G 8510 2342 C:\ProgramData\Microsoft 7.2G 82213 7694 C:\Program Files\WindowsApps 6.9G 22553 3265 C:\Windows\System32 6.8G 18443 2092 C:\Program Files (x86) 5.7G 90 154 C:\Users\Vadim\Documents\WPR Files 4.8G 29596 3568 C:\Users\Vadim\AppData\Local\Microsoft 4.2G 945 85 C:\iso 4.2G 861 71 C:\iso\sources 4.1G 6 3 C:\Windows\LiveKernelReports 4.1G 3572 1386 C:\ProgramData\Microsoft\Windows 4.0G 3 4 C:\Users\Vadim\Documents\Virtual Machines 4.0G 3 3 C:\Users\Vadim\Documents\Virtual Machines\Win10 4.0G 3 1 C:\Users\Vadim\Documents\Virtual Machines\Win10\Virtual Machines
Схожий анализ diskusage занял 39 секунд.
diskusage C:\ /humanReadable /TopDirectory=25 SizeOnDisk Files SizePerDir Directory path 36 656 173 056 ( 34.1 GB) 7 360 28 660 928 512 ( 26.7 GB) C:\Users\Vadim\Downloads 136 884 260 864 (127.5 GB) 618 167 6 728 695 808 ( 6.3 GB) C:\ 6 164 135 936 ( 5.7 GB) 90 5 904 556 032 ( 5.5 GB) C:\Users\Vadim\Documents\WPR Files 4 390 891 520 ( 4.1 GB) 6 4 389 044 224 ( 4.1 GB) C:\Windows\LiveKernelReports 4 468 154 368 ( 4.2 GB) 861 4 373 553 152 ( 4.1 GB) C:\iso\sources 4 299 321 344 ( 4.0 GB) 3 4 299 321 344 ( 4.0 GB) C:\Users\Vadim\Documents\Virtual Machines\Win10\Virtual Machines 4 160 749 568 ( 3.9 GB) 1 4 160 749 568 ( 3.9 GB) C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines\57269E6F-58C0-4826-AD96-76BAFDE889CD 2 791 686 144 ( 2.6 GB) 8 2 791 686 144 ( 2.6 GB) C:\Users\Vadim\Downloads\ODT\Office\Data\16.0.13231.20262 2 416 443 392 ( 2.3 GB) 35 2 416 443 392 ( 2.3 GB) C:\ProgramData\Microsoft\Diagnosis\ETLLogs 2 470 723 584 ( 2.3 GB) 1 135 2 361 192 448 ( 2.2 GB) C:\Users\Vadim\Downloads\Telegram Desktop 1 773 436 928 ( 1.7 GB) 2 1 773 436 928 ( 1.7 GB) C:\Users\Vadim\Music\playlists 1 496 182 784 ( 1.4 GB) 323 1 325 723 648 ( 1.2 GB) C:\Windows\Installer 1 172 525 056 ( 1.1 GB) 3 1 172 525 056 ( 1.1 GB) C:\Users\Vadim\AppData\Local\TechSmith\SnagIt\CrashDumps 1 166 528 512 ( 1.1 GB) 95 1 165 533 184 ( 1.1 GB) C:\ProgramData\Microsoft\Search\Data\Applications\Windows 5 471 752 192 ( 5.1 GB) 12 553 973 971 456 (928.9 MB) C:\Windows\System32 886 448 128 (845.4 MB) 894 886 448 128 (845.4 MB) C:\Users\Vadim\AppData\Local\Microsoft\Office\16.0\OfficeFileCache 1 780 797 440 ( 1.7 GB) 3 020 863 371 264 (823.4 MB) C:\Program Files (x86)\Microsoft Office\root\Office16 773 963 776 (738.1 MB) 84 773 963 776 (738.1 MB) C:\Windows\System32\DriverStore\FileRepository\nvlt.inf_amd64_5e2cc60b5ece0c53 656 900 096 (626.5 MB) 34 656 896 000 (626.5 MB) C:\Users\Vadim\AppData\Local\Microsoft\Windows\Explorer 907 816 960 (865.8 MB) 60 964 608 763 904 (580.6 MB) C:\Windows\servicing\LCU\Package_for_RollupFix~31bf3856ad364e35~amd64~~19041.685.1.6 840 912 896 (802.0 MB) 59 081 593 412 096 (565.9 MB) C:\Windows\servicing\LCU\Package_for_RollupFix~31bf3856ad364e35~amd64~~19041.662.1.10 849 870 848 (810.5 MB) 55 488 573 169 664 (546.6 MB) C:\Windows\servicing\LCU\Package_for_RollupFix~31bf3856ad364e35~amd64~~19041.630.1.6 536 915 968 (512.0 MB) 568 521 830 400 (497.7 MB) C:\Users\Vadim\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\var\cache\apt\archives 511 778 816 (488.1 MB) 88 511 778 816 (488.1 MB) C:\Users\Vadim\OneDrive\Music 524 681 216 (500.4 MB) 527 500 322 304 (477.1 MB) C:\Windows\SoftwareDistribution\Download\baa66f28726f701d6508d16b26235240
Сопоставляя результаты, можно увидеть ряд совпадений. Но очевидно, что у diskusage вывод топ-25 лучше конкретизирован. Однако в нем есть и странности.
Например, dfp четко показывает размер папки System Volume Information с теневыми копиями. А diskusage в ней ничего не видит, поэтому в топе ее нет. Точнее, не видит от имени администратора, но прозревает при запуске от имени системы.
Дальнейшие эксперименты подтвердили, что при анализе файлов и папок diskusage не способна оценивать дисковое пространство в папках, в которые у администратора нет доступа.
Впоследствии в утилиту добавили ключ /systemFile:N, который хотя бы решил вопрос с теневыми копиями и служебными файлами NTFS.
Подсчет размера папок с учетом и без учета жестких ссылок
Размер папки WinSxS долго волновал умы пользователей Windows :) Постоянные читатели блога помнят мою разъяснительную работу с анализом хранилища компонентов. Повторюсь, что DISM фактически показывает объем папки Windows без учета и с учетом жестких ссылок (строки выделены).
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore Component Store (WinSxS) information: Windows Explorer Reported Size of Component Store : 9.94 GB Actual Size of Component Store : 9.65 GB Shared with Windows : 5.64 GB Backups and Disabled Features : 4.01 GB Cache and Temporary Data : 0 bytes Date of Last Cleanup : 2020-12-21 15:53:59 Number of Reclaimable Packages : 9 Component Store Cleanup Recommended : Yes
Утилита diskusage предлагает свой взгляд на этот вопрос. По умолчанию она считает размер только одного экземпляра жесткой ссылки, но с ключом /allLinks учитывает все экземпляры.
Ниже фрагмент вывода двух команд, анализирующих системный диск. В обоих случаях ключ /maxDepth=1 ограничивает глубину вывода одной папкой, т.е. показывает только папки в корне диска. Из результатов я убрал все кроме папки Windows.
diskusage C:\ /maxDepth=1 /humanReadable /TopDirectory=25 SizeOnDisk Files Directory path 21 543 395 328 ( 20.1 GB) 263 633 C:\Windows diskusage C:\ /maxDepth=1 /humanReadable /TopDirectory=25 /allLinks SizeOnDisk Files Directory path 28 009 570 304 ( 26.1 GB) 300 827 C:\Windows
Утилита оценивает объем жестких ссылок в папке Windows в 26.1-20.1=6GB, что близко к оценке DISM в 5.64GB. Заодно мы видим количество жестких ссылок — утилита насчитала 37 194, что тоже полезно для исследований. В принципе, можно скриптовать перебор файлов с fsutil, и я когда-то такое делал, но с diskusage явно проще.
Заключение
Я в курсе, что многие читатели предпочитают для анализа дискового пространства приложения с графическим интерфейсом — WinDirStat, Scanner и прочие. Но консольные утилиты очень удобны для удаленной диагностики, а встроенные — незаменимы в ограниченной корпоративной среде. В моей практике dfp вытеснила Scanner даже в домашних условиях.
Причина выпиливания dfp из Windows 10 так и осталась загадкой. Теперь Microsoft возвращает в состав ОС полезный диагностический инструмент. Правда, в стабильную версию он, видимо, попадет только осенью 2021 года, но лучше поздно, чем никогда.
А чем пользуетесь вы?
Nikolay
Всем доброго времени суток.
Я по старинке — Total Commander
Евгений Грицан
Чаще всего Total Commander на рабочей машине, если нужно быстро что-то глянуть. Если серьёзно посмотреть — Scanner, или в последнее время иногда TreeSize с MS Store.
На линуксе — df =)
Vadim Sterkin
А как в linux с df или не с df получить примерно то же самое, что с diskusage/dfp? Команды в разделе статьи ‘Скорость работы…’
Nikolay Proskuryakov
Scanner в последних версиях Windows у меня часто считал некорректно.
Пользуюсь Tree Size. Портабельный, наглядный, мне вполне хватает возможностей бесплатной версии.
Alexander Kuzin
Уже давно пользуюсь WinDirStat. Другие варианты смотрел, но все они менее удобными оказались.
Даже на работе на серверах есть возможность запустить её без установки и быстро найти куда делось место. Все большие файлы и папки видны сразу.
Скрин моего HDD: https://1drv.ms/u/s!AldqhCdT5alvkMxy5MK9d62osYBtlw?e=mao9fJ
Vadim Sterkin
На серверах? А вы рисковый человек :) Или безрассудный, даже не знаю…
Alexander Kuzin
Честно говоря, не понимаю в чем опасность. Эту программу я использую давно. При необходимости, беру её у себя, копирую на сервер и запускаю.
Vadim Sterkin
Запуск на сервере стороннего ПО без непреодолимой производственной необходимости несет в себе риски компрометации сервера. Если ваша СБ это одобрила, то к вам претензию все равно можно предъявить за привычку делать такое.
Alexey Golets
SpaceMonger 1.4, когда он еще был бесплатным и весил пару сотен кб всего.
Новые версии даже боюсь смотреть.
Vadim Sterkin
Он ведь еще времен 98? На 10 работает нормально, все видит?
Алексей Гагарин
Быстро и определённые папки — Total Commander (дома), Double Commander (на работе).
Комплексный осмотр диска или нескольких дисков — Free Disk Usage Analyzer от ExtenSoft.
Утилитка древняя и не такая уж и быстрая, но до сих пор бесплатная, рабочая и вполне себе удобная и результативная.
http://www.extensoft.com/media/p2/images/FreeProducts/DiskAnalyzer/DiskAnalyzer.jpg
Vadim Sterkin
Занятно, у меня тоже такой расклад по двухпанельным ФМ
Nikolay Kolesnik
я б скачал
Vadim Sterkin
Так скачайте ISO https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewiso
Требуется лишь регистрация в инсайдерской программе, а уж из WIM извлечь можно и по материалам блога.
Diogen
Использую RidNacs (https://www.splashsoft.de/ridnacs-disk-space-usage-analyzer/) — бесплатная + portable.
WinDirStat — не переношу из-за мерзкого графического оформления в нижней части экрана…
Vadim Sterkin
Внешне выглядит как клон TreeSize :)
Stanislav Vershinin
интересно,
эта утилита позволяет смотреть размер папки c:\Windows\CSC ?
очень часто эта папка у нас занимает огромное количество места. но при запущенной системе, нет никакой возможности узнать размер этой папки.
Vadim Sterkin
Владелец папки — система.
Поэтому любой файловый менеджер с правами системы вам должен показать размер. Равно как запуск из планировщика от имени системы
cmd /c dir c:\Windows\CSC >> C:\temp\d.txt
тоже все покажет.Соответственно, diskusage тоже может при запуске от имени системы, как и написано в статье. Только там предлгается psexec (интерактивно), а выше через планировщик — способ вывода отчета в текст.
dfp видит с правами администратора
Виктор Гораев
Давно пользуюсь SpaceSniffer. Ничего лучше пока не нашёл