diff --git a/backup.sh b/backup.sh index 4f90970..4492db5 100644 --- a/backup.sh +++ b/backup.sh @@ -2,27 +2,30 @@ [ -z "${MYSQL_USER}" ] && { echo "=> MYSQL_USER cannot be empty" && exit 1; } [ -z "${MYSQL_PASS}" ] && { echo "=> MYSQL_PASS cannot be empty" && exit 1; } -DATE=`date +%Y%m%d%H%M` +DATE=$(date +%Y%m%d%H%M) echo "=> Backup started at $DATE" -databases=`mysql -u $MYSQL_USER -p$MYSQL_PASS -e "SHOW DATABASES;" | tr -d "| " | grep -v Database` +databases=$(mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" -e "SHOW DATABASES;" | tr -d "| " | grep -v Database) for db in $databases; do - if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then + if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] + then echo "Dumping database: $db" FILENAME=/backup/$DATE.$db.sql - if mysqldump -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER -p$MYSQL_PASS $db > $FILENAME ;then - gzip -f $FILENAME + if mysqldump -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASS" "$db" > "$FILENAME" + then + gzip -f "$FILENAME" else - rm -rf $FILENAME + rm -rf "$FILENAME" fi fi done -if [ -n "$MAX_BACKUPS" ]; then - while [ `ls -1 /backup | wc -l` -gt "$MAX_BACKUPS" ]; +if [ -n "$MAX_BACKUPS" ] +then + while [ $(find /backup -maxdepth 1 -name "*.sql.gz" | wc -l) -gt "$MAX_BACKUPS" ]; do - TARGET=`ls -1 /backup | sort | head -n 1` - echo "Backup ${TARGET} is deleted" - rm -rf /backup/${TARGET} + TARGET=$(find /backup -maxdepth 1 -name "*.sql.gz" | sort | head -n 1) + echo "Backup $TARGET is deleted" + rm -rf /backup/"$TARGET" done fi diff --git a/restore.sh b/restore.sh index d9dd5c4..de67315 100644 --- a/restore.sh +++ b/restore.sh @@ -1,6 +1,6 @@ #!/bin/bash -echo "=> Restore database from \$1" -if mysql -h $MYSQL_HOST -P $MYSQL_POR -u $MYSQL_USER -p$MYSQL_PASS < \$1 ;then +echo "=> Restore database from $1" +if mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASS" < "$1" ;then echo "=> Restore succeeded" else echo "=> Restore failed" diff --git a/run.sh b/run.sh index 1d3fefa..f821cd6 100755 --- a/run.sh +++ b/run.sh @@ -7,12 +7,12 @@ if [ -n "${INIT_BACKUP}" ]; then /backup.sh elif [ -n "${INIT_RESTORE_LATEST}" ]; then echo "=> Restore latest backup" - until nc -z $MYSQL_HOST $MYSQL_PORT + until nc -z "$MYSQL_HOST" "$MYSQL_PORT" do echo "waiting database container..." sleep 1 done - ls -d -1 /backup/* | tail -1 | xargs /restore.sh +find /backup -maxdepth 1 -name '*.sql.gz' | tail -1 | xargs /restore.sh fi echo "${CRON_TIME} /backup.sh >> /mysql_backup.log 2>&1" > /crontab.conf