3

Я пытаюсь оценить использование хранилища на сервере Linux.

Большая часть хранилища исходит от изображений. Я хотел бы посмотреть, смогу ли я получить представление о размере файлов, измененных за последний год. и, возможно, также последние 5 лет, чтобы увидеть, как это соотносится с общим размером каталога изображений (который составляет 40 ГБ)

Я пробовал du -h и это удобно, но я не вижу, как отфильтровать эти результаты по дате изменения.

2 ответа2

3

Если пакет num-utils установлен, numsum предоставляет простой способ добавить много чисел; в то время как numfmt упрощает вывод:

find . -type f -mtime -365 -printf '%s\n' | numsum | numfmt --to=iec

(find код, заимствованный у Ziggy Crueltyfree Zeitgeister.)

За последние 5 лет:

find . -type f -mtime -$((365 * 5)) -printf '%s\n' | numsum | numfmt --to=iec

Если необходимо точное количество дней, date предоставит это. Вот функция оболочки, которая возвращает точное количество дней за последние n лет:

# covert Last _n_ Years to Days
# usage:  ly2d n
ly2d() \
    { echo $(( \
               $(( `date -d today +%s` - \
                   `date -d $1" years ago" +%s` )) \
           / 60 / 60 / 24 )) ; \
    }

Использование ly2d за последние 5 лет:

find . -type f -mtime -$(ly2d 5) -printf '%s\n' | numsum | numfmt --to=iec
2

Вы можете использовать perl для суммирования результатов поиска:

find . -type f -mtime -365 -printf '%s\n' |\
  perl -e 'my $s=0; while(<>) { $s += $_; } print "$s\n"'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .