Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

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.

#1 Le 29/08/2017, à 20:49

JPlaroche

Backup Postgresql or mariaDB & sauvegarde/restore

Bonjour ,
deux petits script pour faire vos sauvegardes & pour la restauration de postgresql ou mariadb  est inclue la protection de données sauvegardé par mot de passe.

las procédures ne traite pas les erreur de mots de passe
elle n'est pas automatisé  ceci est dans un environnement développement permet d'avoir un jeu de TEST     ou voir plus avec quelques modifications
de même j'ai pris l'option de faire séparément les DATA et SCHEMA pour avoir plus de souplesse.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
sauvegarde
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

#!/bin/bash
Fonc_postgresql()
{

export PATH=$PATH:/opt/PostgreSQL/bin  # le chemin pour avoir les binaires de postgresql  voir autrement si vous avez fait une installation avec les dépôts ppa  autre qu'avec le binaire de postgresql 

echo "sauvegarde PostgreSQL  CGIFCH"    #<----  database de CGI qui comporte les fichiers dont j'ai besoin pour faire tourner une application sécuriser SSL Renault
 
echo -n "File PostgreSQL ---DATA  A Sauvegarder :"
CGIFCH_DATA="CGIFCH_DATA_"$d1".backup" 
# DATA
pg_dump     --format custom -a 	      			       --encoding utf8 --host 127.1.1 --port 5432 --username postgres CGIFCH  > $CGIFCH_DATA
	if [ $? -ne 0 ]
	then  
		echo "une erreur est survenue pendant la sauvegarde veuillez corriger POSTGRESQL ---DATA"
		exit 1
	fi
echo -n "File PostgreSQL --- SCHEMA A Sauvegarder :"
CGIFCH_SCHEMA="CGIFCH_SCHEMA_"$d1".backup"
# SCHEMA
pg_dump     --format custom --section pre-data  --section post-data   --encoding utf8 --host 127.1.1 --port 5432 --username postgres CGIFCH  > $CGIFCH_SCHEMA 
	if [ $? -ne 0 ]
	then  
		echo "une erreur est survenue pendant la sauvegarde veuillez corriger POSTGRESQL ---SCHEMA"
		exit 1
	fi
echo "sauvegarde BD PostgreSql Termine\n\n\n"
}
 


Fonc_mariadb()
{
 echo "\n\n\nsauvegarde MariaDb  CGIFCH"    #même chose mais en test pour voir les équivalences postgresql mariadb  et voir faire une migration définitive.

# DATA
echo -n "\n\n\nFile MariaDb ---  A Sauvegarder :"
GIFCH_DATA_M="CGIFCH_DATA_"$dat".sql" 
CGIFCH_DATA_GPG="CGIFCH_DATA_"$dat".sql.gpg" 
mysqldump -u root -p --no-create-info  --databases  CGIFCH > $CGIFCH_DATA_M   # <--- sauvegarde des Datas indépendante pour pouvoir faire de la duplication on aurait put tout faire en une fois il suffit d'enlever --no-creat-info
	if [ $? -ne 0 ]
	then  
		echo "une erreur est survenue pendant la sauvegarde veuillez corriger MariaDb ---DATA"
		exit 1
	fi
echo "\ncrypt mot de passe"
gpg --symmetric --cipher-algo aes256 $CGIFCH_DATA_M   #<---- on crypt avec un mot de passe 
rm -f $CGIFCH_DATA_M	#<---- on supprime le fichier en clair

# SCHEMA
echo -n "\n\n\nFile MariaDb ---ALL sauf DATA  A Sauvegarder :"
CGIFCH_SCHEMA_M="CGIFCH_SCHEMA_"$dat".sql"
CGIFCH_SCHEMA_GPG="CGIFCH_SCHEMA_"$dat".sql.gpg" 
 mysqldump -u root -p --no-data 	--databases  CGIFCH > $CGIFCH_SCHEMA_M
	if [ $? -ne 0 ]
	then  
		echo "une erreur est survenue pendant la sauvegarde veuillez corriger MariaDb ---SCHEMA"
		exit 1
	fi
echo "\ncrypt mot de passe"
gpg --symmetric --cipher-algo aes256 $CGIFCH_SCHEMA_M 
rm -f $CGIFCH_SCHEMA_M

echo "sauvegarde BD MariaDB Termine\n\n\n"
}


#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
# le main
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

echo "bonjour"  
dat=$(date +%Y%m%d) 

cd "/media/????votre USER ????/???votre MEDIA ???/" 2>/dev/null
RetourCode=${?}   

if [[ $RetourCode == 1 ]]
then  
echo "Branche le lecteur"
exit  1
fi
	

echo -n "Voulez-SAUVEGARDER Y/? : "
read yes
if [ "$yes" = "y" ] || [ "$yes" = "Y" ]
then

	cd "/media/????votre USER ????/???votre MEDIA ???/"

	chemin_sav="/media/????votre USER ????/???votre MEDIA ???/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 

	Fonc_postgresql $dat
	Fonc_mariadb $dat
fi
echo "Ok, bye!"
exit 0

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
restaure
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

#!/bin/bash
Fonc_postgresql()
{
export PATH=$PATH:/opt/PostgreSQL/bin;  #<---- voir votre installation personnel   vous devez avoir pg_restore en ligne 

CGIFCH_SCHEMA="CGIFCH_SCHEMA_"$1".backup"
if [ -e "$CGIFCH_SCHEMA" ]
then
# recharge et creation des tables et leurs definitions  
	echo -n "File PostgreSQL ---SCHEMA  A Restaurer :"
	pg_restore      --host localhost --port 5432 --username postgres   --dbname CGIFCH   $CGIFCH_SCHEMA
	if [ $? -ne 0 ]
	then  
		echo "une erreur est survenue pendant la restauration veuillez corriger   POSTGRESQL ---SCHEMA "
		exit 1
	fi
# recharge les données 
	CGIFCH_DATA="CGIFCH_DATA_"$1".backup"
	echo -n "File PostgreSQL ---DATA  A Restaurer :"
 	pg_restore   -a --host localhost --port 5432 --username postgres   --dbname CGIFCH   $CGIFCH_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 "
fi;
}

Fonc_mariadb()
{
CGIFCH_SCHEMA_GPG="CGIFCH_SCHEMA_"$1".sql.gpg";       # <---- votre fichier a restaurer en premier (les définitions)
if [ -e "$CGIFCH_SCHEMA_GPG" ]
then
	CGIFCH_DATA_M="CGIFCH_DATA_"$1".sql" 
	CGIFCH_SCHEMA_M="CGIFCH_SCHEMA_"$1".sql" 
	CGIFCH_DATA_GPG="CGIFCH_DATA_"$1".sql.gpg" 


# SCHEMA
	echo -n "File MariaDb ---SCHEMA  A Restaurer :"
	gpg -o $CGIFCH_SCHEMA_M -d --cipher-algo aes256  $CGIFCH_SCHEMA_GPG #<--- on decrypt
	mysql -u root -p CGIFCH < $CGIFCH_SCHEMA_M   #<--- on restaure 
	if [ $? -ne 0 ]
	then  
		echo "une erreur est survenue pendant la restauration veuillez corriger MariaDb ---SCHEMA"
		exit 1
	fi
	rm -f  $CGIFCH_SCHEMA_M  #<--- on ne laisse pas le fichier en claire par sécurité



# DATA
	echo -n "File MariaDb ---DATA  A Restaurer :"
	gpg -o $CGIFCH_DATA_M -d --cipher-algo aes256  $CGIFCH_DATA_GPG
	mysql -u root -p  CGIFCH < $CGIFCH_DATA_M
	if [ $? -ne 0 ]
	then  
		echo "une erreur est survenue pendant la restauration veuillez corriger MariaDb ---DATA"
		exit 1
	fi
	rm -f  $CGIFCH_DATA_M
fi
}


#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
# le main
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

echo "bonjour" 
# disk USB  de sauvegarde 

cd "/media/????votre USER ????/???votre MEDIA ???/" 2>/dev/null  
RetourCode=${?}   

if [[ $RetourCode == 1 ]]
then  
	echo "Branche le lecteur"
	exit  1
fi

cd /media/????votre USER ????/???votre MEDIA ???/

echo "recuperation RESTAURE BDsql: "
echo -n "Entrez: sa date de sauvegarde : "
read dat


chemin_sav="/media/????votre USER ????/???votre MEDIA ???/DATABASE_"$dat
cd $chemin_sav>/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"
	read yes
	if [ "$yes" = "y" ] || [ "$yes" = "Y" ] 
	then
		Fonc_postgresql $dat 
	fi


	echo -e "Restauration de la base de données MariaDB  Y \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 31/08/2017, à 08:56)


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

Hors ligne

#2 Le 29/08/2017, à 21:01

Vobul

Re : Backup Postgresql or mariaDB & sauvegarde/restore

Salut,

C'est gentil de partager, mais je suis au regret de te dire que la qualité de ton code est… comment dire… pas bonne ? Genre pas bonne du tout ?

J'espère que tu vas continuer à faire des scripts, et d'ici quelques mois, tu regarderas ce script et tu te diras : "mais comment j'ai pu écrire un truc pareil moi… ?"

Conseils:
mets les variables de configuration au début du script
crée des fonctions
si tu veux tester si un commande marche tu peux directement utiliser $?, pas besoin de l'assigner à une variable avant. Et le mieux c'est même de directement tester la commande plutôt que $?.
code en anglais.
apprend à correctement indenter ton code
gère les erreurs correctement
etc…

@+


Vobul

Hors ligne

#3 Le 30/08/2017, à 15:38

JPlaroche

Re : Backup Postgresql or mariaDB & sauvegarde/restore

j'ai modifier la procédure

Dernière modification par JPlaroche (Le 30/08/2017, à 17:15)


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

Hors ligne