LINUX.ORG.RU
ФорумAdmin

Проблема со скриптом для бекапа mysql базы


0

2

Привет. Есть скрипт:

#!/bin/sh
passwd_root_mysql='somepass'

fl=`date "+%d-%m-%Y"`
cd /var/backups/
echo show tables | mysql -u root --password=${passwd_root_mysql} bill | \
  grep -v '^[stuvxyz]2' | grep -v '^Tables' | \
  xargs mysqldump -Q --add-locks -u root --password=${passwd_root_mysql} \
  --default-character-set=cp1251 bill $1 > bill_${fl}.sql
tar -c -z -f ${fl}.tar.gz bill_${fl}.sql
rm -f bill_${fl}.sql
chmod 400 ${fl}.tar.gz

Если его запустить вручную: ./script.sh Все работает, бекап создаеться нормального размера.

Если я в крон пропишу:

27 13 * * * /root/scripts/script.sh

Бекап создаеться с размером 132 байта..

Подскажите пожалуйста где может быть проблема. Спасибо.


Проблема в том, что скрипты запускаемые из cron не наследуют системные переменные, например PATH - вы должны позаботится об их наследовании или писать скрипты таким образом, чтобы эти переменные не были вам нужны.

zgen ★★★★★
()

Может попробовать логи крона посмотреть?

username46
()
Ответ на: комментарий от zgen

Так ведь бекап создаеться , только «маленького» размера, значит пути правильные прально?

username46 вот лог:

Dec 26 13:27:00 serv /usr/sbin/cron[3840]: (root) CMD (/root/scripts/script.sh.sh)
Dec 26 13:29:26 serv crontab[3899]: (root) LIST (root)
Dec 26 13:30:00 serv /usr/sbin/cron[3909]: (root) CMD (/usr/libexec/atrun)
Dec 26 13:33:00 serv /usr/sbin/cron[3959]: (operator) CMD (/usr/libexec/save-entropy)
Dec 26 13:35:00 serv /usr/sbin/cron[4003]: (root) CMD (/usr/libexec/atrun)
Dec 26 13:40:00 serv /usr/sbin/cron[4096]: (root) CMD (/usr/libexec/atrun)

klu41k
() автор топика
Ответ на: комментарий от klu41k

нет.

Лог крона ни о чем не говорит и не должен

zgen ★★★★★
()
Ответ на: комментарий от klu41k

верно. о чем это говорит?
прааавильно. echo show tables | mysql... не вернул ни одной строчки текста.
почему? потому, что не в путях, и просто не запустился.

ну что за детский сад?!

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от klu41k

сделай echo $PATH от рута, то, что получилось, скопируй в буфер и после выполнения crontab -e вставь первой строчкой PATH=<из буфера>

aol ★★★★★
()

> bill_${fl}.sql
tar -c -z -f ${fl}.tar.gz bill_${fl}.sql
rm -f bill_${fl}.sql

//_o

| gzip -9c > bill_${fl}.sql.gz

YAR ★★★★★
()
Ответ на: комментарий от aol

Спасибо за рекомендацию, наверное так и сделаю:)

klu41k
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.