Script de double sauvegarde alternée + clonage

De Le Wiki du Forum-Debian.fr
Révision datée du 30 juillet 2011 à 23:24 par Ricardo (discussion | contributions) (Script permettant une double sauvegarde alternée de son système)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Cette page fait suite à la page : [1] que je vous engage à lire. Pourquoi 'double sauvegarde' ? C'est tout simplement une sécurité supplémentaire. Fonctionnement : Selon la périodicité désirée des sauvegardes, vous en aurez toujours sous la main une plus ancienne et une plus récente. Mon exemple personnel : j'effectue une sauvegarde chaque fin de semaine, avant une mise à jour, elle aussi hebdomadaire. Les semaines impaires, j'utilise la 'sauve', tandis que les semaines paires, je choisis la 'sauve2'. Ainsi, en cas d'accroc, j'ai sous la main une vue de ma machine qui date de moins d'une semaine et, si par manque de chance, cette sauvegarde est, elle aussi, défaillante, il m'en reste une seconde qui n'aura que moins de deux semaines d'ancienneté. Pour utiliser ce script, il convient, bien entendu, d'y entrer vos données en regard des "variables". Comme pour tout script, une fois vos modifications apportées, vous devrez lui donner un nom (perso, je ne me suis pas fatigué : 'sauvegarde' :-) ) et rendre le fichier exécutable (# chmod +x). Vous devrez aussi le placer dans un dossier mentionné dans le PATH. Pour connaître ces dossiers, tapez en tant quuser' : $PATH. Personnellement, je me suis créé un dossier qui contient tous mes scripts -maison, que j'ai appelé 'bin' et que j'ai placé dans /home/ricardo. Comme pré-requis, il faut installer, si ce n'est fait 'sudo' (voir les tutos existants). Il faut disposer d'au moins un DDext ou d'un second DD sur sa machine de façon à pouvoir y créer deux partitions de dimension suffisante pour recevoir nos sauvegardes. Il faudra aussi créer les dossiers de controle /home/control et /home/controle-vous. Cela est expliqué dans le tuto dont le lien est indiqué plus haut. Ce script peut encore être modifié mais il est testé et fonctionne parfaitement. Si vous avez des questions : un MP à ricardo sur le forum. [code]

  1. !/bin/bash
      1. BEGIN INIT INFO
  2. Nom du script : sauvegarde
  3. Auteur : Ricardo, aidé de l'équipe de 'debian-fr.org'
  4. Date de création : juillet 2011
  5. Utilité : faciliter les sauvegardes
  6. Version : cette version est écrite pour l'utilisation avec deux partitions de sauvegarde, à alterner dans le temps.
  7. + Il est souhaitable que ces partitions soient sur un DD différent de celui qui abrite le système
  8. Pre-requis : voir tuto = http://www.debian-fr.org/sauvegarde-clonage-d-une-sid-t25179.html
  9. Description : script permettant d'effectuer, régulièrement et de façon simple, les sauvegardes de son système
  10. Droits : entièrement libres mais en cas de copie, la citation de "debian-fr.org" nous serait agréable
  11. Modifié le :
  12. Objet de la modification :
      1. END INIT INFO

function test_sauvegarde() {

  1. Teste si la sauvegarde a abouti (premier paramètre = 0), sinon, on sort.

if (("$1" > 0)) then

  		printf "\nErreur lors de la sauvegarde de %s\n" "$2" >&2
  		exit 1

else printf "\nSauvegarde de %s : OK\n" "$2" fi }

  1. -----------------Variables-------------------

ddext="/dev/sdb9" ddext2="/dev/sdb10" mount_rep="/mnt/autre" systeme_fich="ext3" systeme_fich2="ext2" controle="/home/controle" controle_user="/home/controle-ricardo" exclure="/root/exclure" exclure_user="/home/ricardo/.exclure" sauve="/mnt/autre/sauve" sauve_user="/mnt/autre/sauve-ricardo"

  1. ---------------------------------------------
  1. Teste l'existence des partitions de sauvegarde et celle du dossier de montage, sinon, on sort avec erreur 1.

[ -e "$ddext" ] && [ -e "$ddext2" ] || { echo "Le DDext ne répond pas !" >&2; exit 1; }

mkdir -p "$mount_rep" || { echo "Le dossier de montage n'existe pas !" >&2; exit 1; }


  1. Choix de la sauvegarde. Si le montage ne s'effectue pas, on sort avec erreur 1.

read -p 'sauve ou sauve2 ? : ' part case $part in

 		sauve)
   			sudo mount -t "$systeme_fich" "$ddext" "$mount_rep" 
 		;;
 		sauve2)
   			sudo mount -t "$systeme_fich2" "$ddext2" "$mount_rep" 
 		;;
 		*)     
   			echo "mauvaise entrée" >&2; exit 1;
 		;;

esac


  1. Teste si la corbeille est pleine (pésence de fichier(s) dans ... /files), si elle l'est, liste les fichiers qu'elle contient

echo -e "\033[4mCONTENU de la CORBEILLE\033[0m\n" if [ -e ~/.local/share/Trash/files/ ] then

		ls ~/.local/share/Trash/files	

read -p "on peut la vider  ? o/* : " corbeille if [ "$corbeille" = o ] then rm -rf ~/.local/share/Trash/* echo -e "\033[4mCORBEILLE VIDÉE\033[0m" fi else echo "La corbeille est vide" fi


  1. Test de l'état de la sauvegarde avec la fonction "test_sauvegarde", qui se chargera de quitter le script si celle-ci est KO
  2. 1er paramètre : $? = statut de la dernière commande, c.a.d le rsync
  3. 2nd paramètre : / puis ~/ = dossier à sauvegarder

read -p "prêt pour la sauvegarde ? o/* : " onyva

  	if [ "$onyva" = o ]
  	then
     		sudo rsync -av --del --backup --backup-dir="$controle" --exclude-from="$exclure" / "$sauve"

test_sauvegarde $? /

     		sudo rsync -av --del --backup --backup-dir="$controle_user" --exclude-from="$exclure_user" ~/ "$sauve_user"
     		test_sauvegarde $? ~/
  	else
     		exit 1
  	fi


  1. Pas de test pour le démontage, si problème, l'alerte explicative doit être suffisante.

sudo umount "$mount_rep" [/code]