Инструменты пользователя

Инструменты сайта


prog:free-space-check

Поддерживаем размер свободного пространства на уровне 80% от всего объема

На сервервере резервных копий стоит nas4free. На него ежедневно в автоматическом режиме закидываются несколько файлов архивов с баз данных. Если не следить за заполнением, то пространство легко переполнится и запись новых архивов будет невозможна.

Данный скрипт просто поддерживает заполнение пространства на уровне не более 80% Естественно порог задается. Если заполнение в какойто период достигнет значения более 80% то начинается удаление самых старых файлов.

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

Структура каталогов такова: в рабочем каталоге, который задается work_dir создаются каталоги в которые в свою очередь записываются свои архивы данных.

free-space-check.sh
#!/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
prog/free-space-check.txt · Последние изменения: Sun, 27 Dec 2015 19:55 — root