CLI¶
diskscope-cli — headless-версия сканера для замеров, smoke-тестов и CI.
Сборка¶
Примеры¶
# Человекочитаемый отчёт
.build/debug/diskscope-cli --limit 20 ~/Library
# JSON для CI
.build/debug/diskscope-cli --json --output size.json ~/Library
# Упасть, если скан больше 50 ГБ (exit 3)
.build/debug/diskscope-cli --json --budget 50GB --output size.json ~/Library
# Только файлы крупнее 1 МБ
.build/debug/diskscope-cli --json --min-size 1048576 ~/Projects
--budget принимает байты или десятичные единицы: KB, MB, GB, TB
(1 KB = 1000 байт). Можно писать 10GB, 1.5 GB, 500MB.
JSON¶
{
"schemaVersion": 1,
"path": "/Users/me/Library",
"totalBytes": 123456789,
"totalHuman": "123,5 МБ",
"files": 1234,
"folders": 56,
"nodes": 1290,
"durationSeconds": 0.42,
"scanner": "getattrlistbulk",
"skippedItems": 0,
"skippedMounts": 0,
"hardLinkBytes": 0,
"budget": {
"limitBytes": 50000000000,
"withinBudget": true,
"exceededBy": 0
},
"topLevel": [
{
"name": "Caches",
"path": "/Users/me/Library/Caches",
"relativePath": "Caches",
"bytes": 12345678,
"human": "12,3 МБ",
"isDirectory": true
}
],
"largest": []
}
totalBytes— занятое место с учётом hard links;human/totalHumanзависят от локали и нужны только для людей.topLevel— дети корня,largest— крупнейшие объекты.budgetотсутствует/null, если--budgetне задан.schemaVersionувеличивается при несовместимом изменении полей.
Коды выхода¶
| Код | Значение |
|---|---|
0 |
Успех, бюджет не превышен |
1 |
Неверные аргументы |
2 |
Ошибка сканирования |
3 |
Бюджет превышен |
В JSON-режиме отчёт всё равно записывается (в stdout или --output), а
сообщение о превышении уходит в stderr. Это позволяет CI сохранить артефакт и
затем упасть по коду 3.
CI¶
- name: Disk budget
run: |
.build/release/diskscope-cli \
--json --budget 80GB --output disk.json "$HOME"
Для GitHub Actions артефакт disk.json можно сохранить через
actions/upload-artifact; бюджет удобно держать в переменной репозитория.
Ограничения¶
- CLI не удаляет и не перемещает файлы.
- Для защищённых папок нужен Full Disk Access у терминала/CI-агента.
--min-sizeменьше 64 КБ увеличивает память и время скана.