Дамп базы по крону за последние четыре дня

mozz

Новичок
Дамп базы по крону за последние четыре дня

Если кому интересно вот решал проблему дампа с ротацией файлов.

1) Раскладываем файлы: dump_base в /etc/cron.daily
dump.php в /home/dump
2) устанавливаем на файл dump_base права rwxrxrx (100755)
3) меняем имя пользователя, пароль и название базы в dump.php
4) наслаждаемся работой скрипта ;-)

Код файла dump.php:
PHP:
<?
$q=date("d");//Берем день из системы
$i=$q & 3;//преобразуем в число от 0 до 3
exec("mysqldump -u user -ppassword base_name>/home/dump/dump$i.sql");//запускаем дамп(user и password - имя пользователя и пароль для доступа к базе)
// Все работает!
?>
Это пишем в файл dump_base:
PHP:
#!/bin/sh
#Запускаем скрипт и прячем stdout в файл, чтобы не получать по почте месаги
/usr/bin/php /home/dump/dump.php>/home/dump/out.txt
 

440hz

php.ru
под *nix это делается хорошими штатными средствами. зачем нам новые велики? 8)
 

svetasmirnova

маленький монстрик
>решал проблему дампа с ротацией файлов.
А как происходит ротация?
 

mozz

Новичок
to svetasmirnova
Перезаписывает файлы каждый день тоесть за 4 дня перезапишется файл с именем dump$i.sql
для большей понятности запусти пример
PHP:
<html>
<head>
</head>
<body>
<?
for ($q=1;$q<=31;$q++){
$i=$q & 3;
echo $q." го числа файл дампа называется = dump".$i.".sql<br>\n";
}
?>
</body>
</html>

to 440hz
Напиши как, скажу спасибо :)
 

svetasmirnova

маленький монстрик
mozz
OK
В shell типа такого можно написать:
PHP:
x=`date +d%`; export x; i=`expr $x % 3`; export i; mysqldump -u user -ppassword base_name>/home/dump/dump$i.sql &2> /home/dump/out.txt
Наверное даже красивше можно: я с shell не на ты
 

mozz

Новичок
Вы уверены что это сработает?
Я с shell скриптингом не дружу вовсе, но то что вы прислали у меня не работает, вместо того что надо он выдает мне всякие глобальные переменные и пути на машине
 

svetasmirnova

маленький монстрик
Я же написала: примерно. вот так будет работать:
PHP:
x=`date +%d`; export x; i=`expr $x % 3`; export i; mysqldump -u user -ppassword base_name>/home/dump/dump$i.sql 2> /home/dump/out.txt
 

mozz

Новичок
Действительно работает! Преклоняюсь перед обширностью Вашего кругозора!
Для себя делаю вывод: пора изучать shell.
 
Сверху