Avis sur script de sauvegarde de site + sa base de données

Adrien.D Membre non connecté
-
- Voir le profil du membre Adrien.D
- Inscrit le : 30/05/2011
- Site internet
- Groupes :

Ci-dessous un script que je viens de terminer (a peu près) qui fonctionne pour sauvegarder un site web et sa base de données à l'endroit où se situe le script.
J'aimerais vos avis, vos améliorations, et vos éventuelles idées sur le travail que j'ai effectué :
Code BASH :
#! /bin/bash #Nombre de sauvegardes maxi par bases nbmaxsauv=3 #Liste des bases séparées par un espace base="mageiatricks_db" #Login et pass Mysql host_sql="127.0.0.1" login_sql="adrien" passwd_sql="*****" #Répertoires rep_sauvegarde="." rep_site="/var/www/html/mageiatricks" #Format date dte=(`date +%Y-%m-%d--%H-%M-%S_`) #Fichier de log log="sauvegarde.log" ####### PROGRAMME ####### ici=`pwd` log="$ici"/"$log" ####### SQL ####### echo "-----------------------------------" >> $log echo "Début : `date +%d/%m/%Y` à `date +%H:%M:%S`" >> $log echo "#### SQL ####" >> $log if [[ `mysqlshow | grep -i $base | wc -l` -eq 1 ]] then nbsauve_sql=(`ls -c1X | grep -E "*_sql.sql.lzma" | wc -l`) if [[ $nbsauve_sql -gt $nbmaxsauv ]] then dif_sql=$(($nbsauve_sql-$nbmaxsauv)) echo "$base : Suppression de $dif_sql sauvegarde(s) : `date +%d/%m/%Y` à `date +%H:%M:%S`" >> $log rm `ls -c1X | grep -E "*_sql.sql.lzma" | head -n$dif_sql` fi echo "$base : Début dump SQL `date +%d/%m/%Y` à `date +%H:%M:%S`" >> $log mysqldump -h $host_sql -u $login_sql -p$passwd_sql $base | lzma -z > "$dte"sql.sql.lzma echo "$base : OK" >> $log echo "$base : Fin dump SQL `date +%d/%m/%Y` à `date +%H:%M:%S`" >> $log else echo "$base : Inexistant" >> $log fi echo "#### FIN SQL ####" >> $log ####### SITE ###### echo "#### SITE ####" >> $log if [[ -d $rep_site ]] then nbsauve_site=(`ls -c1X | grep -E "*_site.tar.lzma" | wc -l`) if [[ $nbsauve_site -gt $nbmaxsauv ]] then dif_site=$(($nbsauve_site-$nbmaxsauv)) echo "$base : Suppression de $dif_site sauvegarde(s) : `date +%d/%m/%Y` à `date +%H:%M:%S`" >> $log rm `ls -c1X | grep -E "*_site.tar.lzma" | head -n$dif_site` fi cd $rep_site nom_site=`basename `pwd`` cd .. echo "$nom_site : Début archivage SITE `date +%d/%m/%Y` à `date +%H:%M:%S`" >> $log tar cJf "$ici"/"$dte"site.tar.lzma $nom_site echo "$nom_site : OK" >> $log echo "$nom_site : Fin archivage SITE `date +%d/%m/%Y` à `date +%H:%M:%S`" >> $log cd $ici else echo "$rep_site : Inexistant" >> $log fi echo "#### FIN SITE ####" >> $log echo "Fin : `date +%d/%m/%Y` à `date +%H:%M:%S`" >> $log echo "-----------------------------------" >> $log
Merci

Config : PC Fixe : X470 GAMING PRO- AMD Ryzen 5 2600X - 16Go RAM - Radeon RX 560 (Pilote libre) - Gentoo Linux - GNOME Desktop - Kernel 5.10 LTS
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !


vouf Membre non connecté
-
- Voir le profil du membre vouf
- Inscrit le : 16/08/2008
- Groupes :
- Je ne jugerai pas l'aspect fonctionnel de ton script, mais il serait judicieux d'ajouter derrière les commandes le test pour tester leur code retour en testant la valeur de $?
-Pour supprimer tes anciennes sauvegardes de plus de n jours, tu peux t'appuyer sur la commande find qui est très efficace du genre
find /ton_repertoire_ou_sont les_fichiers_supprimer -name *_site.tar.lzma -mtime +10 -exec rm {}
(mtime + 10 (fichiers de plus de 10jours)
- tar cJf "$ici"/"$dte"site.tar.lzma $nom_site va peut être générer un affichage des fichiers sauvegardés sur ton écran. Si tu exécutes ce traitement par un cron tu risques de saturer ta boîte mail. Il me semble que tu peux ajouter un truc du genre > /dev/null 2>&1 qui renverra les messages de sorties de cette commande à la poubelle /dev/null
Mageia 9 64 bits Plasma - Asus Prime Z690-P D4 -Intel Core i5 12600 K- 32 Go Kingston Fury Renegade DDR4-3600 Mhz- Gigabyte Nvidia RTX 3060 - Go-M2 Samsung Evo 970 1Tb-SSD 512 Gb Samsung Evo 960 -SSD 512 Gb Crucial M5

xuo Membre non connecté
-
- Voir le profil du membre xuo
- Inscrit le : 23/10/2011
- Groupes :
Il faut l'option 'v' (verbose) sur le tar pour qu'il affiche les fichiers sauvegardés.
Dans le cas du script, pas de problème.
Xuo.

Adrien.D Membre non connecté
-
- Voir le profil du membre Adrien.D
- Inscrit le : 30/05/2011
- Site internet
- Groupes :
vouf :
Bonjour Adrien.D
Bonjour vouf,
vouf :
- Je ne jugerai pas l'aspect fonctionnel de ton script, mais il serait judicieux d'ajouter derrière les commandes le test pour tester leur code retour en testant la valeur de $?
Bonne idée. Je ne sais comment prodéder, si t'as une manip, je suis preneur.
vouf :
-Pour supprimer tes anciennes sauvegardes de plus de n jours, tu peux t'appuyer sur la commande find qui est très efficace du genre
find /ton_repertoire_ou_sont les_fichiers_supprimer -name *_site.tar.lzma -mtime +10 -exec rm {}
(mtime + 10 (fichiers de plus de 10jours)
find /ton_repertoire_ou_sont les_fichiers_supprimer -name *_site.tar.lzma -mtime +10 -exec rm {}
(mtime + 10 (fichiers de plus de 10jours)
En effet, ça peut être une chose que j'ai pas pensée. Vu que le script serait lancé via crontab, je comptais garder un historique de X fichiers plutot que de X jours, mais si ça se déclanche tous les jours, ton idée marche aussi, je vais tester

vouf :
- tar cJf "$ici"/"$dte"site.tar.lzma $nom_site va peut être générer un affichage des fichiers sauvegardés sur ton écran. Si tu exécutes ce traitement par un cron tu risques de saturer ta boîte mail. Il me semble que tu peux ajouter un truc du genre > /dev/null 2>&1 qui renverra les messages de sorties de cette commande à la poubelle /dev/null
Il n'y a pas l'option v comme l’indique xuo donc pas de soucis, en revanche 2>/dev/null peut servir pour ne pas afficher les erreurs, mais autant être prévenu de celles-ci.
Merci

Config : PC Fixe : X470 GAMING PRO- AMD Ryzen 5 2600X - 16Go RAM - Radeon RX 560 (Pilote libre) - Gentoo Linux - GNOME Desktop - Kernel 5.10 LTS
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !

Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie