Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 21/11/2012, à 23:25

H6r6tiqu6

Script de Backup bash de clé USB

Bonsoir à tous !
Dans la ligné de ce topic : http://forum.ubuntu-fr.org/viewtopic.php?id=1103781
Je voulais partager mon script de backup, revu, relativement amélioré, et auquel j'ai rajouté quelques trucs sympas :
Tout d'abord, la partie préliminaire

#!/bin/bash
echo "Veuillez entrer la cause de ce backup :"\n
echo "Backup de routine          (1)"
echo "Veille d'un départ            (2)"
echo "Changement de support (3)"
echo -n ":" 
read choix

if   [ $choix -eq 1 ]; then cause="Backup de routine effectué"
elif [ $choix -eq 2 ]; then cause="Veille d'un départ"
elif [ $choix -eq 3 ]; then cause="Changement de support"
fi

la_date=$(date +%d-%m-%Y)
echo "$cause le " $la_date >> logs.txt
exit 0

Et puis enfin, la partie sauvegarde

#!/bin/bash
# changez le path selon votre OS, celui-là est pour OSX.
./cause.sh &&
[ -d /Users/admin/backup_SLAANESH ] || mkdir /Users/admin/backup_SLAANESH
rsync -aorz --verbose --stats --progress /Volumes/SLAANESH/ /Users/admin/backup_SLAANESH && \ 
echo ""
echo "Backup effectué avec succès, revenez nous voir bientôt" && exit 0 || \
echo "Erreur d'execution, regarde bien si il n'y a pas une merde quelque part !" && exit 1

Tout est placé en CC-BY-SA
PS : Ce script est écris pour un OS X. Forcément, quand on a que des macs à la maison...
PPS : Pour ceux qui douteraient de ma foi en GNU/Linux, ils peuvent aller troller sur ##tdct
PPPS : Je tiens vraiment à remercier pingouinux, pour son aide

Dernière modification par H6r6tiqu6 (Le 28/11/2012, à 18:52)

Hors ligne

#2 Le 21/11/2012, à 23:52

pingouinux

Re : Script de Backup bash de clé USB

Bonsoir,
Pour info, tu peux simplifier ton premier script en supprimant les parties répétitives :

#!/bin/bash
echo "Veuillez entrer la cause de ce backup :"
echo "Backup de routine     (1)"
echo "Veille d'un départ    (2)"
echo "Changement de support (3)"
echo -n ":"
read choix

if   [ $choix -eq 1 ]; then cause="Backup de routine effectué"
elif [ $choix -eq 2 ]; then cause="Veille d'un départ"
elif [ $choix -eq 3 ]; then cause="Changement de support"
fi

la_date=$(date +%d-%m-%Y)
echo "$cause le " $la_date >> logs.txt 
exit 0

Hors ligne

#3 Le 21/11/2012, à 23:58

PengouinPdt

Re : Script de Backup bash de clé USB

Votre premier script peut se simplifier ainsi :

#!/bin/bash
echo "Veuillez entrer la cause de ce backup :"
echo "Backup de routine     (1)"
echo "Veille d'un départ    (2)"
echo "Changement de support (3)"
echo -n ":" 
read choix

la_date=$(date +%d-%m-%Y)

case $choix in
    1) mssg="Backup de routine effectué le" ;;
    2) mssg="Veille d'un départ le" ;;
    3) mssg="Changement de support le" ;;
esac

echo "$mssg $la_date" >> logs.txt

exit 0

En effet, pourquoi déclarer plusieurs fois la date, les echos alors qu'il n'y a aucun changement dans leurs appels respectifs !

Voili, voilou ...

Dernière modification par PengouinPdt (Le 21/11/2012, à 23:59)

Hors ligne

#4 Le 22/11/2012, à 01:31

PengouinPdt

Re : Script de Backup bash de clé USB

Tiens une version légèrement plus compliqué ... mais tellement plus intéressante :

#!/bin/bash

menu=$(cat <<MENU
Veuillez entrer la cause de ce backup :
    Backup de routine     (1)
    Veille d'un départ    (2)
    Changement de support (3)
MENU
)

function menu() {

    clear
    if [ -n "$1" ]; then echo "Ce choix '$1' n'est pas valable !!!"; fi
    choix=0
    echo "$menu"
    read choix

}

date=$(date +%d-%m-%Y)

while menu; do
    case $choix in
        1) mssg="Backup de routine effectué le"; break;;
        2) mssg="Veille d'un départ le"; break;;
        3) mssg="Changement de support le"; break;;
        *) menu $choix ;;
    esac
done

echo "$mssg $date" >> logs.txt

exit 0

L'avantage, le plus pertinent, est que tant que l'utilisateur ne tape pas un des chiffres de 1 à 3, le menu s'affiche à nouveau ...

Tu remarqueras l'astuce pour afficher le menu.
En premier, je déclare une variable menu par l'usage de la structure appelée 'Heredoc'.
En second, une fonction menu, qui est appelée une première fois par la boucle while (tant qu'on se trouve dans le cas d'appel, on reste dans la boucle ...), et une seconde fois, dans le select, au cas où les touches appuyées sont différentes de 1, 2, ou 3.

À voir, comme un exercice de style tongue ;-)

Hors ligne

Haut de page ↑