Restaurer la sauvegarde des sources et des paquets

$ cat restauration.sh
#!/bin/bash
 
####### restauration - Script de restauration APT #######
 
echo
echo "Script de restauration APT"
echo "Une connexion Internet fonctionnelle est requise pour le bon fonctionnement de ce script."
echo
 
##### DEBUT GESTION DES ERREURS #####
 
ls -1 | grep '^[[:digit:]]\{4\}\-[[:digit:]]\{2\}\-[[:digit:]]\{2\}$' > /dev/null
 
if test $? -ne 0
then
    echo "Il n'y a rien à restaurer !"
    exit 2
elif [ ! `whoami` = "root" ]
then
    echo "Il faut être root ... Executez \"sudo !!\"."
    exit 2
elif test $# -ne 1
then
    echo "Il faut un seul paramètre. Tapez \"./restauration sources\" pour restaurer le sources.list ou \"./restauration paquets\" pour restaurer les paquets."
    exit 2
fi
 
##### FIN GESTION DES ERREURS #####
 
##### DEBUT SELECTION D'UNE DATE #####
 
echo
echo "Par défaut le script restaure votre sauvegarde la plus récente. Voulez-vous en restaurer une autre ? [o/n]"
read choix
 
if [ $choix = "n" ] # Si il veut la plus récente, on prend la plus récente en fonction du nom des dossiers de sauvegarde
then
    DATE=`ls -1 | grep '^[[:digit:]]\{4\}\-[[:digit:]]\{2\}\-[[:digit:]]\{2\}$' | tail -n 1`
    echo "La date choisie est $DATE."
elif [ $choix = "o" ] # Sinon on lui demande de rentrer une date
then
    echo "Veuillez entrer la date souhaitée, sous la forme AAAA-MM-JJ : "
    read DATE
    
    if test -d $DATE
    then
        echo "La date choisie est $DATE."
    else
        echo "La date demandée n'existe pas dans les sauvegardes !"
        exit 2
    fi
else
    echo "Veuillez entrer \"o\" ou \"n\"."
    exit 2
fi
 
echo
echo "Est-ce bien ce que vous voulez ? [o/n]" # Confirmation
read choix2
 
if [ $choix2 = "o" ]
then
    echo "Continuons donc !"
    sleep 2 # On dort 2 secondes pour la lisiblité
elif [ $choix2 = "n" ]
then
    echo "Abandon."
    exit 2
else
    echo "Veuillez entrer \"o\" ou \"n\"."
    exit 2
fi
 
echo
 
##### FIN SELECTION D'UNE DATE #####
 
##### DEBUT RESTAURATION #####
 
if test $1 = "sources" # Si on veut restaurer le sources.list
then
    cp /etc/apt/sources.list /etc/apt/sources.list.svgorig.$DATE
    ( cp $DATE/sources.$DATE.list /etc/apt/sources.list && apt-get update ) \
    && (echo ; echo "Restauration du sources.list terminée avec succès.") \
    || (echo ; echo "Restauration du sources.list échouée... Vous n'avez probablement pas les droits d'écriture dans /etc/apt/" ; \
    cp /etc/apt.sources.list.svgorig.$DATE /etc/apt/sources.list && echo "Votre sources.list original a été restauré." ; exit 2)
    
elif test $1 = "paquets" # Si on veut restaurer les paquets
then
    ( dpkg --set-selections < $DATE/paquets.$DATE.list && apt-get update ; apt-get dselect-upgrade ) \
    && (echo ; echo "Restauration des paquets terminée avec succès") \
    || (echo ; echo "Restauration des paquets échouée... Votre connexion Internet est peut-être défaillante." ; exit 2)
    
else
    echo "Paramètre inconnu"
    exit 2
fi
 
exit 0
 
##### FIN RESTAURATION #####

Etiquettes: