Public feed #727347

Untitled

public text v1 · immutable
Raw Edit
·published 2007-10-05 22:53 UTC
rendered paste body
#!/bin/bash

NORM="\033[47;34m[*]\033[0m"
SUCC="\033[47;32m[+]\033[0m"
FAIL="\033[47;31m[-]\033[0m"
WARN="\033[47;33m[?]\033[0m"

if [ ! $1 ]; then
  echo -e $FAIL "No function was specified."
  exit 1
fi

if [ $1 == "backup" ]; then
  if [ ! $2 ]; then
    echo -e $FAIL "No database was given, aborting..."
    exit 1
  else
    sudo /usr/local/mysql/bin/mysql -e "CREATE DATABASE $2" 2> /dev/null
    if [ $? == 1 ]; then
      echo -e $NORM "Beginning backup..."
    else
      echo -e $FAIL "Database does not exist, aborting..."
      exit 1
    fi
  fi

  mkdir -p backup/
  mkdir -p backup/latest/
  mkdir -p backup/archive/
  mkdir -p backup/latest/$2/

  TABLE=$3
  if [ ! $3 ]; then
    TABLE="all"
  fi

  for i in $( ls backup/latest/$2 ); do
    for k in $( ls backup/latest/$2 | grep $TABLE ); do
      if [ "$i" == "$k" ]; then
        mkdir -p backup/archive/$2/
        mv backup/latest/$2/$i backup/archive/$2/
        echo -e $NORM "$k has been archived."
      fi
    done
  done

  TIME=$(date +%y%m%d)
  FILE=$TABLE-$TIME.sql

  sudo /usr/local/mysql/bin/mysqldump $2 $3 > $PWD/backup/latest/$2/$FILE
  echo -e $SUCC "Successfully backed up $1.$2 as $FILE"
elif [ $1 == "restore" ]; then
  if [ ! $2 ]; then
    echo -e $FAIL "No database was given, aborting..."
    exit 1
  else
    sudo /usr/local/mysql/bin/mysql -e "DROP DATABASE $2" 2> /dev/null
    sudo /usr/local/mysql/bin/mysql -e "CREATE DATABASE $2" 2> /dev/null
    echo -e $NORM "Database was destroyed, created"
  fi
  
  if [ ! $3 ]; then
    echo -e $WARN "No path was given to recovery file, using init.sql"
    FILE=$PWD/"init.sql"
    else
    FILE=$3;
  fi
  
  cat $FILE 2> /dev/null > /dev/null
  if [ $? == 0 ]; then
    echo -e $NORM "Recovery file found"
  else
    echo -e $FAIL "Recovery file was not found"
    exit 1
  fi
  
  sudo /usr/local/mysql/bin/mysql $2 < $FILE
  echo -e $SUCC "Database $2 has been restored"
else
  echo -e $FAIL "$1 is not a valid function, aborting..."
  exit 1
fi