将mysqldump文件从一个目录复制到备份目录
我正在构建一个shell脚本,该脚本将在crontab的帮助下每晚运行,我的脚本不断爆炸,并给出错误“Syntax error:wordunexpected(预期为“do”) 脚本本身正在为它在目录中找到的每个MySQL文件创建一个新目录,然后将这些文件从相应的mysqldump目录复制到一个已创建的目录。请让我知道我的代码是否正确,以及是什么原因导致了我的文件结束错误。我不熟悉shell脚本,并且会接受任何建议如果有更好的方法来编写我的代码,那么也可以在这方面提供帮助将mysqldump文件从一个目录复制到备份目录,mysql,linux,shell,crontab,Mysql,Linux,Shell,Crontab,我正在构建一个shell脚本,该脚本将在crontab的帮助下每晚运行,我的脚本不断爆炸,并给出错误“Syntax error:wordunexpected(预期为“do”) 脚本本身正在为它在目录中找到的每个MySQL文件创建一个新目录,然后将这些文件从相应的mysqldump目录复制到一个已创建的目录。请让我知道我的代码是否正确,以及是什么原因导致了我的文件结束错误。我不熟悉shell脚本,并且会接受任何建议如果有更好的方法来编写我的代码,那么也可以在这方面提供帮助 CDPATH="/bac
CDPATH="/backups/mysql"
#
now=$(date +"%Y_%m_%d")
#
# Find Directory Name
#
for file in */; do
dir=${file%/}
if [[ -e "$dir"]]
then
echo "Directory Exists!"
else
echo "Directory doesn't exist."
fi
done
#
# Copy MySQL Databases
#
while [ -d $dir ]; do # Check existing Dirs
cp -upf /dbase/files/*.sql /backups/mysql/$dir/$now # If Dir exists, create copy
if [ ! -d $dir ]; then # If Dir nonexistant create
mkdir -p $dir
cp -upf /dbase/files/*.sql /backups/mysql/$dir/$now
else # If all else fails just create a copy in /mysql
cp -upf /dbase/files/*.sql /backups/mysql/$dir/$now
fi
done
提前感谢您的帮助!
1.不要在“else”之后使用“then”2.第二行可能不是您想要的,它只是将变量dir设置为字符串“dir(/backups/mysql/*)”
…因为问题已经改变,所以过时了 我假设,以下格式的文件…
/dbase/files/db1.sql
/dbase/files/db2.sql …应备份到以下目标: /backups/mysql/db1/2014_11_18/db1.sql
#!/bin/bash
BACKUP_DIR="/backups/mysql/"
FILE_DIR=/dbase/files/
now=$(date +"%Y_%m_%d")
# setting the input field seperator to newline
IFS=$'\n'
# find db backups and loop over
for file in $(find ${FILE_DIR} -maxdepth 1 -name "*.sql" -type f -exec basename {} \;); do
# create backup directory:
mkdir -p "${BACKUP_DIR}${file%.sql}/${now}"
# copy file over
cp "${FILE_DIR}${file}" "${BACKUP_DIR}${file%.sql}/${now}/"
done
将脚本转换为unix编码:
dos2unix script.sh
我仍然收到“语法错误:意外的文件结尾”。保存文件后,“fi”下会自动添加一条黑线。这可能是问题的一部分吗?我尝试过使用“#“删除该行,但始终会在该行下添加新行。如果您有多个db,则必须循环这些db。您建议使用什么来查找是否存在特定目录?您建议如何在数据库中循环?我不熟悉shell脚本,可以利用我能得到的所有帮助。你的假设是正确的。不幸的是,我看不到是否有任何工作,因为我继续得到单词unexpected(expected do)error。我尝试了十六进制转储和重新启动脚本,但我得到了同样的问题。知道是什么引起的吗?是的我知道。我从#变成了#/垃圾桶/扑向#/垃圾桶/垃圾桶,这似乎没有帮助。