ЦЕЛЬ: ежедневно сравнивать размер нашей структуры каталогов. В папке данных более 990 ТБ, поэтому мне пришлось запустить кучу параллельных операций, чтобы она закончилась за разумное время. Иногда мы видим очень быстрый рост больших объемов данных, и в настоящее время у нас нет хорошего способа увидеть, куда были добавлены данные.
ПРОБЛЕМА: $1 и $2 моего awk ничего не выводят, и одинарные кавычки, которые должны их окружать, также не отображаются.
PRE-EMPTIVE STRIKE: я знаю, что есть НАМНОГО лучшие инструменты для поиска этой информации, и мы работаем над их внедрением. Это должно быть быстрым и грязным пластырем, позволяющим нам справляться с любым быстрым ростом, который происходит, пока не будет установлено надлежащее программное обеспечение для мониторинга. Кроме того, разделителем между двумя значениями в файле журнала является табуляция. Вставка его в этот редактор WYSIWYG преобразовала вкладку в пробелы.
Заранее спасибо за любую помощь, которую вы можете мне оказать!
Снарф
Я пытаюсь сделать следующее (псевдокод)
- Найдите папки на два уровня глубже в нашей папке данных
- Создайте структуру каталогов во временной папке, которая отражает структуру папок данных.
- Создайте файлы журнала в структуре временных папок для каждой из папок, найденных в «найти папки».
- Заполните эти файлы журнала выводом du -s папок из «найти папки».
- awk файлы журналов и сборка вставок sql
- как только вставки sql будут выглядеть правильно, я передам awk в mysql
- как только данные появятся в mysql, будет легко запросить ежедневную статистику
Скрипт -
DT=`дата +"%Y%m%d"`
БАЗА=/mnt/данные/тест/
find /mnt/data -maxdepth 2 -mindepth 2 -type d -exec sh -c 'mkdir -p "$(dirname '"$BASE$DT"'{}.log)";touch '"$BASE$DT" '{}.журнал; du -S {} > '"$BASE$DT"'{}.log; awk -F'\''\t'\'' '\''{print "INSERT INTO DATE'"$DT"'(folder_size, folder_location) VALUES('\''$1'\'', '\'' $2'\'');"}'\'' '"$BASE$DT"'{}.log' \;
Пример файла журнала -
0 /mnt/data/apps/bog/minio.production-config/.minio/certs/CAs
12 /mnt/data/apps/bog/minio.production-config/.minio/certs
1 /mnt/data/apps/bog/minio.production-config/.minio
1 /mnt/data/apps/bog/minio.production-config
Пример вывода скрипта для этого лог-файла -
ВСТАВИТЬ В ДАТУ20220508(размер_папки, расположение_папки) ЗНАЧЕНИЯ(, );
ВСТАВИТЬ В ДАТУ20220508(размер_папки, расположение_папки) ЗНАЧЕНИЯ(, );
ВСТАВИТЬ В ДАТУ20220508(размер_папки, расположение_папки) ЗНАЧЕНИЯ(, );
ВСТАВИТЬ В ДАТУ20220508(размер_папки, расположение_папки) ЗНАЧЕНИЯ(, );