Skip to content

Instantly share code, notes, and snippets.

@jlecour
Created April 12, 2010 13:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jlecour/363573 to your computer and use it in GitHub Desktop.
Save jlecour/363573 to your computer and use it in GitHub Desktop.
#! /bin/sh
SRC_DB_NAME='source db name'
SRC_DB_USER='source db user name'
SRC_DB_PWD='source db password'
DEST_DB_NAME='destination db name'
DEST_DB_USER='destination db user name'
DEST_DB_PWD='destination db password'
PARENT_DIR="/tmp"
cd $PARENT_DIR
echo "# Sauvegarde de la base $DEST_DB_NAME"
DUMPDIR="dump_$DEST_DB_NAME"
if [ ! -d $PARENT_DIR/$DUMPDIR ]; then
echo "- le dossier de dump doit être créé"
mkdir -p $PARENT_DIR/$DUMPDIR
else
echo "- le dossier de dump doit être vidé"
rm -rf $DUMPDIR/*
fi
chmod a+w $DUMPDIR
echo "- dump de $DEST_DB_NAME"
mysqldump -u $DEST_DB_USER -p$DEST_DB_PWD -Q --tab=$DUMPDIR $DEST_DB_NAME
echo "# Sauvegarde de la base $SRC_DB_NAME"
DUMPDIR="dump_$SRC_DB_NAME"
if [ ! -d $PARENT_DIR/$DUMPDIR ]; then
echo "- le dossier de dump doit être créé"
mkdir -p $PARENT_DIR/$DUMPDIR
else
echo "- le dossier de dump doit être vidé"
rm -rf $DUMPDIR/*
fi
chmod a+w $DUMPDIR
echo "- dump de $SRC_DB_NAME"
mysqldump -u $SRC_DB_USER -p$SRC_DB_PWD -Q --tab=$DUMPDIR $SRC_DB_NAME
echo "# Import de $SRC_DB_NAME dans $DEST_DB_NAME"
cd $DUMPDIR
echo "- import de la structure dans $DEST_DB_NAME"
cat $PARENT_DIR/$DUMPDIR/*.sql | mysql -u $DEST_DB_USER -p$DEST_DB_PWD $DEST_DB_NAME
echo "- import du contenu dans $DEST_DB_NAME"
mysqlimport -u $DEST_DB_USER -p$DEST_DB_PWD $DEST_DB_NAME $PARENT_DIR/$DUMPDIR/*.txt
@jlecour
Copy link
Author

jlecour commented Apr 12, 2010

L'idée est de copier le contenu d'une base en production pour l'importer dans une base de test ou de pré-production (staging).
La base de destination est sauvegardée avant car elle sera écrasé par l'import.
Si la base de destination contient des tables qui ne sont pas dans la source, elles seront conservées.

Je suis nul en Shell donc je ne sais pas bien comment écrire une fonction (avec des paramètres) afin de refactoriser le code de la partie "dump".
Je n'ai pas non plus utilisé beaucoup de test pour interrompre l'exécution en cas d'erreur intermédiaire.

N'hésitez pas à utiliser ce script et à proposer des améliorations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment