Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Русскоязычное Linux-сообщество ([info]lj_ru_linux)
@ 2015-07-15 11:48:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Как разобрать файлопомойку?
Коллеги, прошу совета. Может быть есть какой-нибудь ненайденный мной готовый инструмент или неочевидный простой подход.

Как понять, что занимает место в файлопомойке (чёртов agile!)? Долгие годы я успешно обходился ncdu (NCurses du). Достаточно один раз просканировать директорию, а потом можно удобно навигировать по поддиректориям в его интфефейсе и видеть, что сколько места занимает.

В случае больших директорий можно сохранить json отчёт по использованию места в файл (ncdu -o) и потом его быстро загрузить, пусть даже не другой машине (ncdu -f).

Однако сейчас я столкнулся с разбором ну очень большой файлопомойки (5*10^7 файлов) и понимаю, что ncdu мне уже недостаточно:
  • Дамп по использованию места приходится загружать целиком в оперативную память, и её не очень-то хватает!
  • ncdu не собирает данные по таймстампам файлов. Ответить на вопрос "куда так резво подевались N гигабайт за последнюю неделю" не представляется возможным.
  • Любая попытка провести хоть какую-то аналитику над собранными данными - тот ещё квест. Относительно просто нагрепать по дампу гистограмму количества файлов по расширениям, но в какой директории они скопились? Занятое место по расширениям кажется простым, до тех пор, пока не захочется корректно обрабатывать хардлинки. А попытка воспользоваться умными скриптовыми языками для анализа проваливается, потому что json.loads требует как минимум 2*N памяти.

Нагуглился мощный DiskReport, но отправлять данные дяде - не вариант. И ещё не факт, что они переварят такие объёмы.

В общем, я в печали. Хочется инструмент/метод, который бы позволил собрав в один проход данные по хранящимся в ФС файлам, не загружая все эти данные в оперативную память проводить анализ использования места по различным критериям. Хотя бы готовый метод сохранить отчёт по использованию места в БД, а там я уж как-нибудь руками да SQLем поанализирую.

Предложения?

UPD: Так привык к подходу с ncdu, что проглядел простой путь:
find -type f -fprintf filelist.txt '%k %i %T+ %p\0'
А потом переконопачивать filelist.txt всякими перлушками вдоль да поперёк. Это, конечно, не так идеально, как мечталось, но должно помочь. Спасибо.


(Читать комментарии) (Добавить комментарий)