Страница 1 из 1

Подскажите по скрипту.

Добавлено: 2010-11-10 17:28:16
kharkov_max
День добрый пишу скрипт, который будет делать бекап и удалять старые каталоги.

Вот кусок:

Код: Выделить всё

#Удаляем старые бекапы
ls $backupfolder | awk -F"-" '{print $3 $2 $1}' |  while read timefolder; do
    s=`date -d $timefolder +%s`
    echo $s $olddate
    if [ $s -lt $olddate ]; then
        dir=`date -d $timefolder +"%d-%m-%Y"`
        rmdir $backupfolder$dir
    fi
done
А вот вывод значений переменных в цикле

Код: Выделить всё

1289399223 1289140023
1289399223 1289140023
Переменная s, после получения при первом проходе значения, в дальнейшем не меняет своего значения, а по идее должна.
Заморочка тут "s=`date -d $timefolder +%s`"
Переменная timefolder свое значение меняет на протяжении всего цикла.

Подскажите что не так делаю.
Такая схема в Ubuntu работает ...

Спасибо ...

Re: Подскажите по скрипту.

Добавлено: 2010-11-11 12:51:40
Shuba
Вообщем что-то ты замудрил. Вот строчка моего скрипта, который удаляет папку с юэкапами месячной давности:

Код: Выделить всё

rm -rf `find /mnt/Samba/WorkFiles/ -ctime +31 -type d -depth 1 -name 'BackUp*'`
удаление просто файлов ещё проще:

Код: Выделить всё

find /mnt/Samba/WorkFiles/ -ctime +31 -type f -delete

Re: Подскажите по скрипту.

Добавлено: 2010-11-11 12:53:03
Shuba
*с бэкапами месячной давности

Re: Подскажите по скрипту.

Добавлено: 2010-11-11 15:05:31
kharkov_max
Замудрил т.к. нужно так
И мне кажется что для удаления важно имя папки, а не дата ее физического создания/переименования/измениния/копирования

Моя ошибка была в переводе даты в секунды
Вопрос решил так:

Код: Выделить всё

# Удаляем старые каталоги бекапов
for timefolder in `ls $backupfolder | awk -F"-" '{print $3 $2 $1 "0000"}'`
do
    s=`date -j $timefolder +%s`
    if [ $s -lt $olddate ]; then
        dir=`date -j $timefolder +"%d-%m-%Y"`
        rmdir $backupfolder$dir
    fi
    unset $s
done
Может и сложнее чем у вас, но работает и еще раз повторюсь, так нужно !!!