URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 79114
[ Назад ]

Исходное сообщение
"Скрипт удаления старого архива, названного по дате"

Отправлено Im27th , 06-Мрт-08 09:20 
Пришёл я тут на новую работу. У них там база на SLES9 архивируется следующим скриптом:

/etc/rc.d/basa stop останавливаем базу
NOW=$(date +"%Y%m%d") задаём параметр для имени архива
cd /arc переходим в директорию со старым архивом
rm * удаляем старый архив
cd /basa переходим в директорию с базой
tar cvzf /basa/$NOW.tgz создаём архив
/etc/rc.d/basa start запускаем базу

Архив запускается кроном раз в неделю. После всего этого остаётся архив типа 20080305.tgz
Не нравится мне, что старый архив стирается того, как сделается новый.
Но если я сначала создам новый, то как мне потом стереть старый? Надо придумать какую-нибудь хрень типа
OLD=$(date +"%Y%m%d") - 14
чтобы удалялся архив 2-недельной давности, а недельной и новый оставались. Но надо же текст перевести в число, а как это корректно написать не понимаю пока. Я с unixом давно не работал.

fsbackup не предлагать (миллион смайликов)


Содержание

Сообщения в этом обсуждении
"Скрипт удаления старого архива, названного по дате"
Отправлено dimao , 06-Мрт-08 10:11 
>[оверквотинг удален]
>20080305.tgz
>Не нравится мне, что старый архив стирается того, как сделается новый.
>Но если я сначала создам новый, то как мне потом стереть старый?
>Надо придумать какую-нибудь хрень типа
>OLD=$(date +"%Y%m%d") - 14
>чтобы удалялся архив 2-недельной давности, а недельной и новый оставались. Но надо
>же текст перевести в число, а как это корректно написать не
>понимаю пока. Я с unixом давно не работал.
>
>fsbackup не предлагать (миллион смайликов)

Попробуй что нибудь типа:
for f in `ls`
do
.....
done;


"Скрипт удаления старого архива, названного по дате"
Отправлено Nimdar , 06-Мрт-08 11:10 
>[оверквотинг удален]
>20080305.tgz
>Не нравится мне, что старый архив стирается того, как сделается новый.
>Но если я сначала создам новый, то как мне потом стереть старый?
>Надо придумать какую-нибудь хрень типа
>OLD=$(date +"%Y%m%d") - 14
>чтобы удалялся архив 2-недельной давности, а недельной и новый оставались. Но надо
>же текст перевести в число, а как это корректно написать не
>понимаю пока. Я с unixом давно не работал.
>
>fsbackup не предлагать (миллион смайликов)

man find
find /arc -mtime +14


"Скрипт удаления старого архива, названного по дате"
Отправлено Im27th , 06-Мрт-08 11:45 
Про -mtime +14 мне понравилось, но я уже сделал следующим образом:
-----------------------------------
NOW=$(date +"%j")
OLD=$(echo "$NOW-14" | bc -l)
tar cvzf /basa/$NOW.tgz sig
rm /arc/$OLD.tgz
-----------------------------------