как периодически архвировать

glam

Новичок
как периодически архвировать

Всем привет!
Куда постить уместней не знаю, поэтому пишу в этом разделе.
Вопрос наверное глупый, просто никогда не делал периодических заданий для cron, поэтому не знаю с чего начать.
Короче - мне нужно каждый день архивировать одну папку в rar архив и присвоить файлу архива некоторое имя, включающее завтрашнюю дату, например "data_2008-02-02.rar" (чтобы не портить уже существующий файл "data_2008-02-01.rar", который актуален на сегодня и который люди качают). Тем, что люди в данный момент качают можно было пренебречь, если бы архивировал мгновенно - но папка большая, примерно 300 мб, думаю долго будет архивиться (кстати примерно сколько? думаю минут 10-15). Мой php скрипт сегодня, естественно, будет давать ссылку на сегодняшний файл "data_2008-02-01.rar". И еще по cron нужно будет удалять все файлы, у которых дата меньше вчерашней - т.е. "data_2008-01-30.rar" удалить, а "data_2008-01-31.rar" - пока оаставить, вдруг не докачал кто.
Вообще cron запускает sh скрипты? В них можно вычислять даты? Вычитать дни? Есть у кого-нибудь подходящий образец?
 

phprus

Moderator
Команда форума
glam
Вообще cron запускает sh скрипты? В них можно вычислять даты? Вычитать дни?
А куда он денется?
Даты вычислять можно (подробнее man date ). Пример: date -d"+1 day"
 

Dovg

Продвинутый новичок
как-то озадачился созданием бекапов
хотелось иметь некий перезаписываемый набор бекапов, чтобы при превышении некоторого лимита перезаписывались старые файлы
для меня самое простое оказалось:
0 4 * * * tar -czf /home/xxx/backup/files/$(date +%u).tar.gz /home/xxx/site/www/

в имя файла пишет день недели, соответственно у меня есть возможность откатить на -1 .. -7 дней
 

ys

отодвинутый новичок
У меня такой тупой скрипт бекапит mysql базы за последние 7 дней.

Код:
cd $HOMEDIR
BASES=`cat bases.list`

for base in $BASES; do
        base_path=${BACKUPDIR}/${base}

        test -f ${base_path}.6.gz && mv ${base_path}.6.gz  ${base_path}.7.gz
        test -f ${base_path}.5.gz && mv ${base_path}.5.gz  ${base_path}.6.gz
        test -f ${base_path}.4.gz && mv ${base_path}.4.gz  ${base_path}.5.gz
        test -f ${base_path}.3.gz && mv ${base_path}.3.gz  ${base_path}.4.gz
        test -f ${base_path}.2.gz && mv ${base_path}.2.gz  ${base_path}.3.gz
        test -f ${base_path}.1.gz && mv ${base_path}.1.gz  ${base_path}.2.gz
        test -f ${base_path}.0.gz && mv ${base_path}.0.gz  ${base_path}.1.gz
        test -f ${base_path}.gz   && mv ${base_path}.gz    ${base_path}.0.gz

        /usr/local/bin/mysqldump ...  $base | gzip > ${base_path}.gz
done
 
Сверху