имеем:
FreeBSD 8.0 и sh скрипт для бекапа mysql и файловзадача: раз в сутки по крону бекапить базы и файлы и акуратно складывать в папки
проблема: скрипт прекрасно работает, если запускать самому, работает из под рута и из под простого юзера backup, но при добавление в крон, скрипт упорно отказывается входить в оператор for, как раз таки где и происходит бекап баз. Изголялся с кроном уже, как мог, запускал от разных юзеров, дописывал PATH и SHELL
все равно одно и то же.
Папка $DIR/$DAY создается и в ней появляется files_backup.tgz, но вот дампы не делаются, по причине того, что цикл for не отрабатывает...
Сначала думал, что касячит вызов функции backup_mysql, пробовал без использования функции, но при этом функция backup_files всегда отрабатывала
ниже привожу листинг скрипта, ткните носом, где ошибся, у меня глаз уже замылился, кучу времени убил на эту ерунду, самому стыдно...
за основу брался этот скрипт http://www.cyberciti.biz/tips/how-to-backup-mysql-databases-...
#!/bin/sh
WORKDIR='/root/backup'
DIR='/home/backup/files'
DAY=`date +%F`
TEST=`ls -l $DIR | grep $DAY | wc -l`
if [ $TEST = 0 ];.
then
mkdir $DIR/$DAY
fi
### MySQL Setup ###
MUSER="dump"
MPASS="password"
MHOST="localhost"
### Where is BIN files ###
MYSQL=`which mysql`
MYSQLDUMP=`which mysqldump`
GZIP=`which gzip`
TAR=`which tar`
FIND=`which find`
RMDIR=`which rmdir`
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases' | grep -v 'information_schema' | grep -v 'mysql')"
backup_mysql ()
{
for db in $DBS;
do
dbDAY=`date +%H-%M`
FILE=$DIR/$DAY/$db-$dbDAY.sql.gz
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS --database $db | $GZIP -1 > $FILE
done
}
backup_files ()
{
LIST=`cat $WORKDIR/backup_list`
FOLDER=`$TAR -czf $DIR/$DAY/files_backup.tgz $LIST`
}
backup_mysql
backup_files
$FIND $DIR/* -type d -mtime +7 -exec $RMDIR -R {} \;
cron
0 6 * * * /root/backup/backup.sh > /dev/null 2>&1