LINUX.ORG.RU

Бэкап файлов

 , ,


0

1

Доброе утро всем! использую баш скрипт для создания архива изображений снятых с ip камер за день. Срабатывает в нолноч по крону.

#!/bin/bash
#create today arch folder
mkdir /srv/ftp/arch/`date +%d-%m-%Y`
#copy there cams content
cp -r /srv/ftp/cams /srv/ftp/arch/`date +%d-%m-%Y`
#delete today content in cams
find /srv/ftp/cams -type f -print -delete
#delete arch files older that XX (180) days
find /srv/ftp/arch -mtime +180 -print -delete
Нужно как то допилить скрипт, чтобы при малом количестве свободного места на харде (например 30гб или любое другое) он находил и удалял наиболее старые файлы. Пока не имею представления как( Надеюсь на вашу помощь!


Свободное место определяете с помощью ″df /srv/ftp/arch″ и в цикле делаете ваш ″find ... -mtime +$i -delete″ уменьшая каждый раз i на 1 от 179, пока не будет достаточно места, или пока i не достигнет минимального допустимого значения.

mky ★★★★★
()
Ответ на: комментарий от mky

man'ы не установлены. df работает, теперь вопрос такой, как использовать то что он выдает для моей задачи ?

xzard
() автор топика
Ответ на: комментарий от xzard

Можно и в строке поиска google набирать man df.

R=( `df /srv/ftp/arch` ) ;
if [ ${R[10]} -lt 30000000 ] ; then 
    echo REMOVE 
fi

Если следующий вопрос будет «как организовать цикл», то лучше сразу идите в раздел Job.

mky ★★★★★
()
Ответ на: комментарий от xzard

был бы благодарен за ссылку на мануал.

google:// man df

Скорее всего, приведет на Опеннет, там шикарная коллекция манов.

А вообще, не представляю, как жить без установленных манов и, главное, зачем. Линукс встраиваемый, что ли? Или какой-нибудь недособранный LFS?

Bagrov ★★★★★
()
Ответ на: комментарий от mky

извиняюсь если мои вопросы довольно глупы. работаю с линуксом всего пару недель, до этого был опыт только с вин системами.

xzard
() автор топика
FREE_SPACE_TRESHOLD_ON_BACKUP_DISK=50               # in Gbytes

# Check how much place is available on backup disk, clear disk if empty space bellow the threshold
# During clearing we know how our backup directories called. Go from oldest to newest and delete oldest
# one by one until becomes empty space
function clear_backup_disk()
{
oldest=365 # in days
((FREE_SPACE_TRESHOLD_ON_BACKUP_DISK*=1024*1024)) # df command gives back free blocks in 1k, because of this dont multiple on 1024

    echo "Searching for $FREE_SPACE_TRESHOLD_ON_BACKUP_DISK empty Kbytes"


    # Go througth all files in mounted and delete them until enougth place will be allocated
    while [ $oldest -gt 1 ]
    do
        free_space_on_disk=`df $BACKUP_MOUNT | grep $mounted_disk | awk '{print $4}'`
        echo "oldest=$oldest free_space_on_disk=$free_space_on_disk"

        if [ $free_space_on_disk -lt $FREE_SPACE_TRESHOLD_ON_BACKUP_DISK ]
         then
              DIR_TO_DEL=$BACKUP_MOUNT/$(date '+20%y%m%d' -d "-$oldest days")"_Server"
              if [ -d $DIR_TO_DEL ]; then
                echo "* Found dir to delete $DIR_TO_DEL"
                rm -rf $DIR_TO_DEL
              fi
              ((oldest-=1))
        else
            echo "Got free space"
            break
        fi
    done
}
velikS
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.