Akuma
@Akuma
Веб-программист

Поддержание минимального свободного места на диске Linux?

Есть сервер с отдельным диском под кеш. Размер кеша можем варьироваться сильными скачками, например:
- 30 Gb
- 40 Gb
- 35 Gb
- 120 Gb
- 70 Gb

В данный момент кеш чистится по принципу "удаляем файлы старше X дней" по крону.

В целом все хорошо, но место на диске используется не оптимально. В среднем используется около 30% диска, а остальное только в пики скачков.

Подскажите, есть ли какая-то утилита или банальный find . -delete который мог бы удалять самые старые файлы автоматически при достижении, скажем, 90% заполненности диска. Своеобразный вытесняющий кеш на диске.
Интересует именно хранение обычных файлов, без использования облачных решений и т.п.
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
банальный find . -delete

да, пару строк баша и в крон

Удалять при достижении N% заполненности
https://stackoverflow.com/a/5912404/1603055
FILESYSTEM=/dev/sda1 # or whatever filesystem to monitor
CAPACITY=95 # delete if FS is over 95% of usage 
CACHEDIR=/home/user/lotsa_cache_files/

# Proceed if filesystem capacity is over than the value of CAPACITY (using df POSIX syntax)
# using [ instead of [[ for better error handling.
if [ $(df -P $FILESYSTEM | awk '{ gsub("%",""); capacity = $5 }; END { print capacity }') -gt $CAPACITY ]
then
    # lets do some secure removal (if $CACHEDIR is empty or is not a directory find will exit
    # with error which is quite safe for missruns.):
    find "$CACHEDIR" --maxdepth 1 --type f -exec rm -f {} \;
    # remove "maxdepth and type" if you want to do a recursive removal of files and dirs
    find "$CACHEDIR" -exec rm -f {} \;
fi


Удалять самые старые файлы
https://superuser.com/a/1003638
DIR=/tmp
FREESPACE=1000000
find $DIR -type f | xargs ls -1rt | while read f ; do
  if [ `df --output=avail $DIR | tail -1` -ge $FREESPACE ] ; then
    break
  fi
  # rm -f $f
done


Вместе там слепите как-нибудь сами уже
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект