====== Поддерживаем размер свободного пространства на уровне 80% от всего объема ====== На сервервере резервных копий стоит [[http://www.nas4free.org|nas4free]]. На него ежедневно в автоматическом режиме закидываются несколько файлов архивов с баз данных. Если не следить за заполнением, то пространство легко переполнится и запись новых архивов будет невозможна. Данный скрипт просто поддерживает заполнение пространства на уровне не более **80%** Естественно порог задается. Если заполнение в какойто период достигнет значения более **80%** то начинается удаление самых старых файлов. В данном конкретнос случае удаление производится только из одного подкаталога, потому как в остальных количество архивов меньше и они совсем свежие. Структура каталогов такова: в рабочем каталоге, который задается **work_dir** создаются каталоги в которые в свою очередь записываются свои архивы данных. #!/bin/sh # Если заполнение ФС больше 80% начинаем работать occuped_space=80 work_dir="/mnt/backupdata/Backup" # Получаем заполненный объем пространства get_occuped_space() { perc_numb=`df -h | grep backup | awk '{print $5}'` ret_val=`echo $perc_numb | cut -c1-2` return $ret_val } # Цикл удаления по одному самому старому файлу из всех каталогов clear_one() { echo "Clearing one!" cd $work_dir dirs="ats_upr1" # for i in `ls -1` for i in $dirs do fd=`ls -1 -rt $i/ | head -n 1` echo "Deleting $i/$fd" rm $i/$fd done sync sleep 17 } get_occuped_space cur_occuped=$? # Удаляем до тех пор, пока объем не достигнет заданного while [ "$cur_occuped" -gt "$occuped_space" ] do clear_one get_occuped_space cur_occuped=$? echo "cur_occuped: $cur_occuped" done