cron job无法正常工作将错误称为“意外令牌附近的语法错误”)

时间:2011-11-04 08:56:15

标签: linux cron

我正在创建一个备份我整个数据库的cron作业。为此,我使用了以下代码

*/5 * * * * mysqldump -u mydbuser -p mypassword mydatabase | gzip > /home/myzone/public_html/test.com/newfolder/dbBackup/backup.sql.gz

但是没有得到备份而是因为“意外令牌附近的语法错误”而得到错误。在我的密码中有圆括号包括这是因为这个发生。请帮助我..

提前致谢。

3 个答案:

答案 0 :(得分:1)

)是shell的特殊字符(crontab使用shell执行命令)。

在密码周围添加单引号:

*/5 * * * * mysqldump -u mydbuser -p 'mypassword' mydatabase | ...

答案 1 :(得分:0)

尝试删除-u mydbuser和-p mypassword ..

之间的空格
-umydbuser -pmypassword

答案 2 :(得分:0)

正如我在评论中建议的那样,在外部脚本中移动它,并将脚本包含在cron.daily中。我在下面给出了这样一个脚本的基本框架。这样你就获得了一些优势=>你可以测试脚本,你可以轻松地重用它,它也是可配置的。我不知道你这样做是为了管理还是个人使用。我的建议更倾向于“我为管理做”:)...

#!/bin/bash
# Backup destination directory
DIR_BACKUP=/your/backup/directory
# Timestamp format for filenames
TIMESTAMP=`date +%Y%m%d-%H%M%S`
# Database name
DB_NAME=your_database_name
# Database user
DB_USER=your_database_user
# Database password
DB_PASSWD=your_database_password
# Database export file name
DB_EXPORT=your_database_export_filename.sql
# Backup file path
BKFILE=$DIR_BACKUP/your-backup-archive-name-$TIMESTAMP.tar 
# Format for time recordings
TIME="%E"
########################################### 
# Create the parent backup directory if it does not exist
if [ ! -e $DIR_BACKUP ]
   then
   echo "=== Backup directory not found, creating it ==="
   mkdir $DIR_BACKUP 
fi

# Create the backup tar file
echo "=== Creating the backup archive ==="
touch $BKFILE

# Export the database
echo "=== Exporting YOUR DATABASE NAME database ==="
time bash -c "mysqldump --user $DB_USER --password=$DB_PASSWD $DB_NAME > $DIR_BACKUP/$DB_EXPORT"

# Add the database export to the tar file, remove after adding
echo "=== Adding the database export to the archive ==="
time tar rvf $BKFILE $DIR_BACKUP/$DB_EXPORT --remove-files

# Compress the tar file
echo "=== Compressing the archive ==="
time gzip $BKFILE

# All done
DATE=`date`
echo "=== $DATE: Backup complete ==="