我每天都尝试备份我的数据库。当我运行我的脚本时,它完美无缺。但是当我把它放到crontab中时,gz-archive是空的。它创建了一个空的sql文件,然后将其压缩为gz文件。
有人可以解释直接运行和运行cronjob之间的区别吗?
#!/usr/local/bin/bash
DATE=`date '+%Y-%m-%d_%H%M%S'`
mysqldump -u myUser -ptest*123 private_db | gzip > /mnt/backup#/MySQL/mysqlBackup_$DATE.sql.gz
if [ -f /mnt/backup#/MySQL/mysqlBackup_$DATE.sql.gz ]; then
logger "Backup: MySQL private_db ...success"
else
logger "Backup: MySQL private_db ...FAILED"
fi
答案 0 :(得分:0)
好的,我找到了解决方案。这是一个问题取决于我的操作系统。我使用FreeBSD,而cronjob以root身份运行。但是cronjob root与用户root有不同的系统环境。所以我在我的剧本中添加了一些环境。
#!/usr/local/bin/bash
DATE=`date '+%Y-%m-%d_%H%M%S'`
SHELL=/bin/csh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
/usr/local/bin/mysqldump -u myUser -ptest*123 private_db | gzip > /mnt/backup#/MySQL/mysqlBackup_$DATE.sql.gz
if [ 1000 -gt $(wc -c </mnt/backup#/MySQL/mysqlBackup_$DATE.sql.gz) ];then
logger "Backup: MySQL private_db ...FAILED (filesize to small )"
else
if [ -f /mnt/backup#/MySQL/mysqlBackup_$DATE.sql.gz ]; then
logger "Backup: MySQL private_db ...success"
else
logger "Backup: MySQL private_db ...FAILED"
fi
fi