#1 Le 02/11/2017, à 21:42
- JPlaroche
Sauvegarde & Restore MARIADB POSTGRESQL Sécurisé
Bonjour ,
suite a la demande de certain ...
je fais beaucoup de CGI C++ ceci explique CGIFCH etc.... mais libre à vous (exemple "CGIFCH > $PGSQL_DATA" là "CGIFCH" est une base de donnée)
la procédure vous demande un mot de passe pour chaque base
exemple
postgresql -> --username postgres (user)
à savoir que output est binaire donc pas de problème de securisation des Datas
mariadb -> -u root -p (user = root et prompt pour la demande du password)
à savoir que cela produit des fichiers en claire donc il faut les crypter
avec la procedure GPG
le problème de sécurisation des user n'est pas traiter dans ce post . seul la sécurité des Datas et Shema est prise en compte
c'est une longue habitude de Mettre "Y" yes et "N" no pour info sur beaucoup d'affichage O oui et 0 zéro porte a confusion.....
SAUVEGARDE
#!/bin/bash
Fonc_postgresql()
{
export PATH=$PATH:/usr/lib/postgresql/10/bin; # mettre votre chemin d'accès qui vous concerne
echo "sauvegarde PostgreSQL CGIFCH"
echo -n "File PostgreSQL ---DATA A Sauvegarder :"
PGSQL_DATA="PGSQL_DATA_CGIFCH_"$1".backup"
# DATA
pg_dump --format custom -a --encoding utf8 --host 127.1.1 --port 5432 --username postgres CGIFCH > $PGSQL_DATA
if [ $? -ne 0 ]
then
echo "une erreur est survenue veuillez corriger POSTGRESQL ---DATA "
exit 1
fi
echo -n "File PostgreSQL --- SCHEMA A Sauvegarder :"
PGSQL_SCHEMA="PGSQL_SCHEMA__CGIFCH_"$1".backup"
# SCHEMA
pg_dump --format custom --section pre-data --section post-data --encoding utf8 --host 127.1.1 --port 5432 --username postgres CGIFCH > $PGSQL_SCHEMA
if [ $? -ne 0 ]
then
echo "une erreur est survenue veuillez corriger POSTGRESQL ---SCHEMA "
exit 1
fi
echo "sauvegarde BD PostgreSql Termine"
}
Fonc_mariadb()
{
echo "sauvegarde MariaDb CGIFCH"
# DATA
MARIADB_DATA="MARIADB_DATA_CGIFCH_"$1".sql"
echo "File MariaDb ---DATA A Sauvegarder :"
mysqldump -u root -p --no-create-info --databases CGIFCH > $MARIADB_DATA # <--- sauvegarde des Datas indépendante pour pouvoir faire de la duplication on aurait tout faire en une fois
if [ $? -ne 0 ]
then
echo "une erreur est survenue veuillez corriger MariaDb ---DATA "
exit 1
fi
echo "cryp mot de passe"
gpg --symmetric --cipher-algo aes256 $MARIADB_DATA #<---- on crypt avec un mot de passe
rm -f $MARIADB_DATA #<---- on supprime le fichier en clair
# SCHEMA
MARIADB_SCHEMA="MARIADB_SCHEMA_CGIFCH_"$1".sql"
echo "File MariaDb ---SCHEMA A Sauvegarder :"
mysqldump -u root -p --no-data --databases CGIFCH > $MARIADB_SCHEMA
if [ $? -ne 0 ]
then
echo "une erreur est survenue veuillez corriger MariaDb ---SCHEMA"
exit 1
fi
echo "cryp mot de passe"
gpg --symmetric --cipher-algo aes256 $MARIADB_SCHEMA
rm -f $MARIADB_SCHEMA
echo "sauvegarde BD MariaDB Termine"
}
echo "bonjour"
dat=$(date +%Y%m%d)
cd "/media/soleil/Z400/" 2>/dev/null
RetourCode=${?}
if [[ $RetourCode == 1 ]]
then
echo "Branche le lecteur"
exit 1
fi
echo -n "Voulez-SAUVEGARDER Y/N : "
read yes
if [ "$yes" = "y" ] || [ "$yes" = "Y" ]
then
cd "/media/??? votre chemin???/"
chemin_sav="/media/??? votre chemin???/DATABASE_"$dat
mkdir $chemin_sav 2>/dev/null
RetourCode=${?}
if [[ $RetourCode == 1 ]]
then
echo "Dossier de sauvegarde déjà existant"
exit 1
fi
cd $chemin_sav
RetourCode=${?}
if [[ $RetourCode == 1 ]]
then
echo "Dossier inacessible"
exit 1
fi
echo -e "Sauvegarde de la base de données PostGresql Y/N \n"
read yes
if [ "$yes" = "y" ] || [ "$yes" = "Y" ]
then
Fonc_postgresql $dat
fi
echo -e "Sauvegarde de la base de données MariaDB Y/N \n"
read yes
if [ "$yes" = "y" ] || [ "$yes" = "Y" ]
then
Fonc_mariadb $dat
fi
fi
echo "Ok, bye!"
exit 0
RESTAURATION
#!/bin/bash
Fonc_postgresql()
{
export PATH=$PATH:/usr/lib/postgresql/10/bin; #<---- voir votre installation personnel vous devez avoir pg_restore en ligne
# mettre votre chemin d'accès qui vous concerne
PGSQL_SCHEMA="PGSQL_SCHEMA_CGIFCH_"$dat".backup"
if [ -e "$PGSQL_SCHEMA" ]
then
# recharge et creation des tables et leurs definitions
echo -n "File PostgreSQL ---SCHEMA A Restaurer :\n\n"
pg_restore --host localhost --port 5432 --username postgres --dbname CGIFCH $PGSQL_SCHEMA
if [ $? -ne 0 ]
then
echo "une erreur est survenue pendant la restauration veuillez corriger POSTGRESQL ---SCHEMA "
exit 1
fi
# recharge les données
PGSQL_DATA="PGSQL_DATA_CGIFCH_"$dat".backup"
echo -n "File PostgreSQL ---DATA A Restaurer :\n\n"
pg_restore -a --host localhost --port 5432 --username postgres --dbname CGIFCH $PGSQL_DATA
if [ $? -ne 0 ]
then
echo "une erreur est survenue pendant la restauration veuillez corriger POSTGRESQL ---DATA "
exit 1
fi
echo "restaurer controler avec un vacum general \n\n\n"
fi;
}
Fonc_mariadb()
{
MARIADB_SCHEMA_GPG="MARIADB_SCHEMA_CGIFCH_"$dat".sql.gpg"; # <---- votre fichier a restaurer en premier (les définitions)
if [ -e "$MARIADB_SCHEMA_GPG" ]
then
MARIADB_SCHEMA="MARIADB_SCHEMA_CGIFCH_"$dat".sql"
MARIADB_SCHEMA_GPG="MARIADB_SCHEMA_CGIFCH_"$dat".sql.gpg"
# SCHEMA
echo -n "File MariaDb ---SCHEMA A Restaurer :\n\n"
gpg -o $MARIADB_SCHEMA -d --cipher-algo aes256 $MARIADB_SCHEMA_GPG #<--- on decrypt
mysql -u root -p CGIFCH < $MARIADB_SCHEMA #<--- on restaure
if [ $? -ne 0 ]
then
echo "une erreur est survenue pendant la restauration veuillez corriger MariaDb ---SCHEMA"
exit 1
fi
rm -f $MARIADB_SCHEMA #<--- on ne laisse pas le fichier en claire par sécurité
MARIADB_DATA="MARIADB_DATA_CGIFCH_"$dat".sql"
MARIADB_DATA_GPG="MARIADB_DATA_CGIFCH_"$dat".sql.gpg"
# DATA
echo -n "File MariaDb ---DATA A Restaurer :\n\n"
gpg -o $MARIADB_DATA -d --cipher-algo aes256 $MARIADB_DATA_GPG
mysql -u root -p CGIFCH < $MARIADB_DATA
if [ $? -ne 0 ]
then
echo "une erreur est survenue pendant la restauration veuillez corriger MariaDb ---DATA"
exit 1
fi
rm -f $MARIADB_DATA
fi
}
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
# le main
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
echo "bonjour"
# disk USB de sauvegarde
cd "/media/??? votre chemin???/" 2>/dev/null
RetourCode=${?}
if [[ $RetourCode == 1 ]]
then
echo "Branche le lecteur"
exit 1
fi
cd /media/??? votre chemin???/
echo "recuperation RESTAURE BDsql: "
echo -n "Entrez: sa date de sauvegarde : "
read dat
chemin_sav="/media/??? votre chemin???/DATABASE_"$dat
cd $chemin_sav 2>/dev/null
RetourCode=${?}
if [[ $RetourCode == 1 ]]
then
echo "Dossier de sauvegarde inexistant"
exit 1
fi
echo -e "Restauration de la base de données PostGresql Y/N \n"
read yes
if [ "$yes" = "y" ] || [ "$yes" = "Y" ]
then
Fonc_postgresql $dat
fi
echo -e "Restauration de la base de données MariaDB Y/N \n"
read yes
if [ "$yes" = "y" ] || [ "$yes" = "Y" ]
then
Fonc_mariadb $dat
fi
echo "Ok, bye! "
exit 0
@bientôt
Dernière modification par JPlaroche (Le 02/11/2017, à 21:47)
depuis 2004 avec Ubuntu
depuis 1976 informaticien Mon site plein d'information pour les programmeurs http://www.ombrebleu.com
Hors ligne