2017-09-21 1 views
1

매일 DB를 백업하려고합니다. 내 스크립트를 실행할 때 완벽하게 작동합니다. 하지만 이것을 crontab에 넣으면 gz 아카이브가 비어 있습니다. 빈 sql 파일을 만든 다음 gz 파일로 압축합니다.MySQL 백업이 cronjob에서 작동하지 않습니다.

아무도 직접 실행과 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

어떤 스크립트 이름이고 어떤 명령 당신은 cron 작업을 만드는 데 사용하고 있습니까? 현재 환경에 기존의 cron 작업이 있습니까? – Utsav

+0

이것은 bash 스크립트입니다. 그리고 저는 그것을 "crontab -e"를 통해 cron에 넣었습니다. 그리고 네 전에는 cronjobs가 거의 없습니다. Cron이 스크립트를 실행하면/var/log/messages에서 볼 수 있습니다. 그러나 gz 파일은 비어 있습니다. –

+0

본인의 스크립트를 사용해 보았습니다. 내가 crontab에 넣으면 작동합니다. – quantummind

답변

0

그래, 해결책을 찾았습니다. 내 운영 체제에 따라 문제가있었습니다. 나는 FreeBSD를 사용하고 cronjob은 루트로 작동합니다. 하지만 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

관련 문제