"Syntax error: Unterminated quoted string"
Solution 1
The line with
DROPBOX="/root/Dropbox/Backups
does not have a "
at the end.
The MYSQL
, MYSQLDUMP
and GZIP
variables refer to the programs used to execute various commands. So they should contain the path of those programs:
MYSQL="/usr/bin/mysql"
MYSQLDUMP="/usr/bin/mysqldump"
GZIP="/bin/gzip"
You can use the output of which <program name>
to see what to put there:
$ which mysql
/usr/bin/msql
$ which gzip
/bin/gzip
Solution 2
I faced the same issue as seen below.
MY_VAR="123"#comments
then I put a space before # character, then solved.
Related videos on Youtube
Hamza
Updated on September 18, 2022Comments
-
Hamza over 1 year
I am trying to use a backup script that will backup my sql database and website files. I am running Ubuntu 12.04 32 bit version and zPanel.
Also what are these variables:
MYSQL="$()"
MYSQLDUMP="$()"
GZIP="$()"I assume the first one is DB name.
Here is the script:
#!/bin/sh #---------------------------------------------------------------- # Daily Backup Routine - Backup and Sync to Dropbox # This script creates a backup using today's date, then deleted # any backups made 3 days ago. If run every day it will ensure # you have a week's worth of backups of your MySQL databases and # zPanel web directories. # # Uses whatever Dropbox account is running on the server. # # Written by Richard Ferreira for the backup of zPanel websites. # Contact me - richard[at]beetle001.com #---------------------------------------------------------------- # # Before we get started, we should set some parameters. We'll need these for later. # The webserver's datafiles: WEBDIR="/var/zpanel/hostdata/" # Where do we want the backup to go? (SET THIS - IT'S A TEMP FOLDER) BACKUP="/root/backup-temp" # Where is our dropbox folder? (SET THIS TO YOUR ABSOLUTE BACKUP PATH) DROPBOX="/root/Dropbox/Backups # What do we want our date to look like? NOW=$(date +"%d-%m-%Y") # We need to know the date 3 days ago to purge any backups that were made 3 days ago. # This ensures we don't keep unnecessarily old backups. # It doesn't matter if it skips one every now and then - we'll just have to check manually from time to time. # If you want to keep more days backups, change the "3 days ago" to "x days ago" DAYSAGO=$(date --date="3 days ago" +"%d-%m-%Y") # What should our file backup look like? WEBFILE="webdirs-full-$NOW.tar.gz" # Our MySQL Login information and some paths (we'll use 'which' to make sure we get them): SQLUSER="root" # Don't forget to change the root password here! SQLPASS="xxxxxxxxxxxx" SQLHOST="localhost" MYSQL="$(db-name)" MYSQLDUMP="$(db-name)" GZIP="$(.gz)" # # Let's just, for sanity's sake, make sure our temp backup folder exists. mkdir $BACKUP # DON'T EDIT ANYTHING BELOW THIS LINE #---------------------------------------------------------------- # Now let's start! # Let's get the databases that we want to backup. DBS="$($MYSQL -u $SQLUSER -h $SQLHOST -p$SQLPASS -Bse 'show databases')" # Now let's dump them to .sql files and put them in our backup directory. for db in $DBS do FILE=$BACKUP/mysql-$db.$NOW.gz $MYSQLDUMP -u $SQLUSER -h $SQLHOST -p$SQLPASS $db | $GZIP -9 > $FILE done # # Let's shove the whole webserver directory into a tarball and throw that in with the sql files: tar -zcvf /root/backup/$WEBFILE $WEBDIR # That's all done - we should put the backups on Copy by putting them into our Copy folder. # First let's make a folder for today. mkdir $DROPBOX/$NOW # Copy our backups into it. cp -R $BACKUP/* $DROPBOX/Asterix/$NOW # We can delete the backup we made 3 days ago from Copy now. rm -rf $DROPBOX/$DAYSAGO # And clear out the temporary director for next time. rm $BACKUP/* # Job well done! # Have a beer and relax!
Here is my problem: When I try to run the script I get this error: ./backup.sh: 66: ./backup.sh: Syntax error: Unterminated quoted string
If anyone could help me with this would appreciate it a lot!
-
Hamza over 9 yearsOk I will see if that fixes. Also in the script I also did not know what to put in at: MYSQL="$()" MYSQLDUMP="$()" GZIP="$()" So I just put my DB name in for the first two and .gz in the third one. Is that fine?
-
muru over 9 years@Hamza for
MYSQL
in the brackets, use the output ofwhich mysql
, andwhich mysqldump
forMYSQLDUMP
. Similarly forGZIP
. e.g.:MYSQL=/usr/bin/mysql
.