LinuxForum.Fans
Тема

cron настройка бекапа

Автор: Rassol2 53 сообщений 9566 просмотров
13.02.2014 21:25 #366082

Нужно делать бекап базы данных.
Решил делать скриптом.

text
#!/bin/bash
#префикс c датой, чтобы знать от какого числа бэкап
DATE=`date +%F`
#указываем директорию по умолчанию
DIR=/home/zbackup/mysql/$DATE
#делаем автоотчистку мусора, допустим вам надо хранить старые бэкапы только 3 дня.
find /home/zbackup/mysql/ -mtime +3 -print -mindepth 1 -delete >/dev/null 2>&1
#указываем какую базу вам нужно бэкапить
mysqldump -uroot -h localhost -pпароль_рута 1baz > $DIR\_1bz.sql

вызывая этот скрипт вручную с консоли все отрабатывает на ура.
Добавил в cron

text
crontab -e
00 4 * * * /etc/.rassol2/mysql_backup.sh

но результата нет :(

посоветуйте как узнать причину ?

13.02.2014 22:19 #366088

может с владельцем и группой проблемы ?

13.02.2014 22:24 #366090

вот я думаю что нужно как то задать запуск этого скрипта от рута, или что то еше?
права на фаил рут 700

13.02.2014 22:54 #366099

ну в кроне насколько я знаю можно указать юзера от которо должна выполнятся команда... ну если crontab -e выполнялось от рута то по идее указывать необязательно

14.02.2014 09:25 #366142
Rassol2 написал:


но результата нет :(

посоветуйте как узнать причину ?

Советую прописать полные пути к программам в скрипте. Наверняка собака зарылась в разных PATH.

14.02.2014 11:04 · отредактировано #366159

Эм попробуй убрать 1-ин 0-ль, там должен быть только 1-ин 0-ль
[console]crontab -e
0 4 * * * /etc/.rassol2/mysql_backup.sh[/console]

14.02.2014 15:28 #366236

Еще возможно, что в строке DATE=`date +%F` надо заэкранировать "+" и "%".

14.02.2014 17:42 #366261
lone_wolf написал:
Эм попробуй убрать 1-ин 0-ль, там должен быть только 1-ин 0-ль
[console]crontab -e
0 4 * * * /etc/.rassol2/mysql_backup.sh[/console]

не совсем понял, убрать первый 0 ?
Что то вроде
[console]crontab -e
* 4 * * * /etc/.rassol2/mysql_backup.sh[/console]

14.02.2014 18:20 · отредактировано #366271

неее сдеть вот так:
[console]crontab -e
0 4 * * * /etc/.rassol2/mysql_backup.sh[/console]

14.02.2014 19:03 #366281

Rassol2, перенаправь вывод то в файл то для отладки...

14.02.2014 19:14 #366285
Fat-Zer написал:
Rassol2, перенаправь вывод то в файл то для отладки...

а как сделать это ?

text
0 4 * * * /etc/.rassol2/mysql_backup.sh > /home/1.txt
14.02.2014 19:58 #366298

/etc/.rassol2/mysql_backup.sh >>/tmp/mysql_backup.log 2>&1
и время поставь какое-нить чтобы до 4-х утра не ждать, и перенаправь куда-нить в /tmp, чтобы с правами точно проблем не было... stdout, вообще говоря, тут не нужен... только если глушилку из find'а убрать...

и посмотри логи... по идее если mysqldump проваливается крон должен это записать

14.02.2014 20:53 #366320

попробуем

14.02.2014 21:28 #366341
Fat-Zer написал:
/etc/.rassol2/mysql_backup.sh >>/tmp/mysql_backup.log 2>&1
и время поставь какое-нить чтобы до 4-х утра не ждать, и перенаправь куда-нить в /tmp, чтобы с правами точно проблем не было... stdout, вообще говоря, тут не нужен... только если глушилку из find'а убрать...

и посмотри логи... по идее если mysqldump проваливается крон должен это записать

не прокатило :(

бакап не создался.
Лога нет.

text
10 19 * * * /etc/.rassol2/mysql_backup.sh
15 19 * * * /etc/.rassol2/mysql_backup.sh >>/tmp/mysql_backup.log 2>&1

так было прописано.

14.02.2014 23:35 · отредактировано #366392

эм в скрипте не увидел куда нужно складывать бекап *SCRATCH*
и вот тут
[console]mysqldump -uroot -h localhost -pпароль_рута 1baz > $DIR\_1bz.sql[/console]
должно быть не вот так ?
[console]mysqldump -uroot -h localhost -pпароль_рута 1baz > $DIR/_1bz.sql[/console]

14.02.2014 23:45 #366399
lone_wolf написал:
эм в скрипте не увидел куда нужно складывать бекап *SCRATCH*
и вот тут
[console]mysqldump -uroot -h localhost -pпароль_рута 1baz > $DIR\_1bz.sql[/console]
должно быть не вот так ?
[console]mysqldump -uroot -h localhost -pпароль_рута 1baz > $DIR/_1bz.sql[/console]

допустим за экранируем. Но это не решит общего вопроса работы крона.

азница только в том что скрипт вручную запускается с консоли. И скрипт запускается кроном. Во проблема где то в это разнице.

14.02.2014 23:57 #366407

Rassol2, а крон то запущен?

15.02.2014 00:29 · отредактировано #366420
Rassol2 написал:
[quote=lone_wolf]эм в скрипте не увидел куда нужно складывать бекап *SCRATCH*
и вот тут
[console]mysqldump -uroot -h localhost -pпароль_рута 1baz > $DIR\_1bz.sql[/console]
должно быть не вот так ?
[console]mysqldump -uroot -h localhost -pпароль_рута 1baz > $DIR/_1bz.sql[/console]

допустим за экранируем. Но это не решит общего вопроса работы крона.

азница только в том что скрипт вручную запускается с консоли. И скрипт запускается кроном. Во проблема где то в это разнице.[/quote]
мне чего-то всю жизжинь думал что / это бэкслеш применяюший ся в пути а вот \ это экранируюший

15.02.2014 00:46 #366423
Fat-Zer написал:
Rassol2, а крон то запущен?

[console]root@Debian114:~# ps faux | grep cron
root 1139 0.0 0.0 22428 804 ? Ss Jan30 0:00 /usr/sbin/cron
root 11680 0.0 0.0 7548 844 pts/0 S+ 22:23 0:00 \_ grep cron
[/console]
+ создал "колокольчик"
[console]crontab -e
*/5 * * * * echo "Прошло пять минут"[/console]

просидел 10 минут пытался не моргать но ничего не увидел.

15.02.2014 00:47 #366424

мне чего-то всю жизжинь думал что / это бэкслеш применяюший ся в пути а вот \ это экранируюший

все правильно вам казалось.

Войдите или зарегистрируйтесь, чтобы ответить.