我想每天备份一个MySQL数据库(在另一台服务器上)。与此相关,我打算将这一天添加到转储文件名,以便每月重写,但存在一个关键问题。我不知道shell,我也无法访问测试环境。
我创建的代码是
#!/bin/bash
CURR_DAY=`date +"%d"`
echo "Commencing backup for today $CURR_DAY"
DB_BACKUP="/hsphere/local/home/backup_account/backups/mysql_backups"
DBUSER="user"
DB_PASSWD="xxx"
HN="123.456.789.001"
DB="maindb"
# Create the backup directory
mkdir -p $DB_BACKUP
echo "---------------------"
mysqldump -u $DBUSER -p$DB_PASSWD -h $HN $DB | gzip > $DB_BACKUP/mysqldump_$DB_$CURR_DAY.gz
echo "---------------------"
我似乎在mySQLDump行中获得了一个CR或LF,其中的变量就是这样,我做错了吗?
答案 0 :(得分:1)
您的shell脚本需要一些工作。
$(command)
语法,你really should use instead。 (引用这些。)您的脚本,重新访问:
#!/bin/bash
CURR_DAY="$(date +%d)"
echo Commencing backup for today "$CURR_DAY"
DB_BACKUP="/hsphere/local/home/backup_account/backups/mysql_backups"
DBUSER=user
DB_PASSWD=xxx
HN=123.456.789.001
DB=maindb
# Create the backup directory
mkdir -p "$DB_BACKUP"
echo ---------------------
mysqldump -u "$DBUSER" -p"$DB_PASSWD" -h "$HN" "$DB" | gzip > "$DB_BACKUP/mysqldump_${DB}_${CURR_DAY}.gz"
echo ---------------------
在mysqldump
行中添加大括号至少修复了一个其他错误 - shell尝试插入$DB_
,而不是$DB
后跟下划线。
引用有合理的机会修复随机换行问题;如果没有,请评论。