Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/11/2017, à 22: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, à 22:47)


depuis 2004 avec Ubuntu
depuis 1976 informaticien   Mon site plein d'information pour les programmeurs   http://www.ombrebleu.com

Hors ligne