Avec linux, on pense à un truc qui serait bien, on le cherche, si on ne le trouve pas pile poil, on met les doigts dans le cambouis, et hop c'est magique.
[Idée de départ]
Donc je voulais délocaliser mes données perso sur un disque dur externe, mais de façon automatique au branchement de ce disque dur. On me dis alors qu'un script pourrais faire ça : ce lancer directement à la connexion du périphérique. Ha oui, c'est bien ... mais comment ... je n'y connais rien moi 😐 heureusement MulX est là 🙂
[Mise en oeuvre]
Sur la racine du disque, créer un fichier nommé
autorun.inf
avec le code suivant
[autorun]
open=/bin/bash ./autorun.sh
Ensuite on crée un script nommé "autorun.sh"
#!/bin/bash
# Par MulX (Aymeric) et Talagath 15/01/08
# Sujet original : http://gw.lenezir.fr/viewtopic.php?f=9&t=164
# v1.0
# Faire les sauvegardes de mes données sur un disque dur externe avec dar et autorun.inf
# Pour afficher les notifications d'avancement du script
exec 3> >(zenity --notification ---window-icon="/media/disk/Sauvegardes/gtk-apply.svg" --listen)
echo "Message : Sauvegarde des données avec dar. Au moins une sauvegarde de référence doit être effectuée avant de faire les sauvegardes incrémentielles " >&3
# Choisir le type de sauvegarde : de référence ou incrémentielle
# une sauvegarde de référence doit être faite la 1er fois
reponseZenity1=$(zenity --list --radiolist --width=500 --height=150 \
--title="Type de sauvegarde" \
--text="Quelle sauvegarde voulez-vous faire ? (au moins une fois 'de référence')" \
--column="À faire ?" --column="Description" --column="ID" \
--print-column=3 --hide-column=3 \
TRUE "Sauvegarde incrémentielle (plus rapide)" "incre" \
FALSE "Sauvegarde de référence (plus lent)" "ref")
# En fonction de la réponse précédente
# 1) Sauvegarde incrémentielle
# 2) Sauvegarde de référence
case "$reponseZenity1" in
# 1)
incre ) reponseZenity=$(zenity --list --checklist --width=500 --height=250 \
--title "Sélectionner les opérations à effectuer" \
--text="Veuillez sélectionnez les opérations à effectuer :" \
--column="À faire ?" --column="Description" --column="ID" \
--print-column=3 --hide-column=3 \
TRUE "Faire la sauvegarde de Mes photos" "1"\
TRUE "Faire la sauvegarde de Mes Docs" "2" \
TRUE "Faire la sauvegarde de Mes Images" "3"\
TRUE "Faire la sauvegarde de autre" "4" \
FALSE "Faire la sauvegarde de Mes vidéos" "5"\
FALSE "Éteindre l'ordinateur après les sauvegardes" "6")
;;
# 2)
ref ) reponseZenity=$(zenity --list --checklist --width=500 --height=250 \
--title "Sélectionner les opérations à effectuer" \
--text="Veuillez sélectionnez les opérations à effectuer :" \
--column="À faire ?" --column="Description" --column="ID" \
--print-column=3 --hide-column=3 \
TRUE "Faire la sauvegarde de référence de Mes photos" "1"\
TRUE "Faire la sauvegarde de référence de Mes Docs" "2" \
TRUE "Faire la sauvegarde de référence de Mes Images" "3"\
TRUE "Faire la sauvegarde de référence de autre" "4" \
TRUE "Faire la sauvegarde de référence de Mes vidéos" "5"\
TRUE "Éteindre l'ordinateur après les sauvegardes" "6")
;;
esac
# On transforme la réponse de zenity avec ' ' plutôt que des '|'
reponseIFS=$(echo "$reponseZenity" | sed "s/|/ /g" )
# Fonction pour faire appel à dar plus simplement
function call_dar
{
# $1 == nom de backup
# $2 == Dossier a sauvegarder
# option sup.
nomDeBackup=$1
dossierBackup=$2
shift 2
case "$reponseZenity1" in
# 1)
incre )
echo -n calling dar with :
echo -e " dar -v -w -y -s4000M -A "/media/disk/Sauvegardes/Sauvegarde"$nomDeBackup"" -c "/media/disk/Sauvegardes/Sauvegarde"$nomDeBackup"_$(date -I)" -R "$dossierBackup" $@"
dar -v -w -y -s4000M -A "/media/disk/Sauvegardes/Sauvegarde"$nomDeBackup"" -c "/media/disk/Sauvegardes/Sauvegarde"$nomDeBackup"_$(date -I)" -R "$dossierBackup" $@
;;
# 2)
ref )
echo -n calling dar with :
echo -e " dar -v -w -y -s4000M -c "/media/disk/Sauvegardes/Sauvegarde"$nomDeBackup"" -R "$dossierBackup" $@"
dar -v -w -y -s4000M -c "/media/disk/Sauvegardes/Sauvegarde"$nomDeBackup"" -R "$dossierBackup" $@
;;
esac
}
# Traite la réponse (ID) de zenity
function toBackup
{
while [ x$1 != "x" ]
do
case $1 in
("1")
echo "Message : Sauvegarde de 'Mes Photos'" >&3
call_dar 'Photos' '/home/.space/konic/Mes photos/'
echo "Message : Sauvegarde de 'Mes Photos' effectuée" >&3
sleep 2
;;
("2")
echo "Message : Sauvegarde de 'Mes Docs'" >&3
call_dar 'Docs' '/home/.space/konic/Mes docs/' '-P eBooks'
echo "Message : Sauvegarde de 'Mes Docs' effectuée" >&3
sleep 2
;;
("3")
echo "Message : Sauvegarde de 'Mes Images'" >&3
call_dar 'Images' '/home/.space/konic/Mes Images/'
echo "Message : Sauvegarde de 'Mes Images' effectuée" >&3
sleep 2
;;
("4")
echo "Message : Sauvegarde de 'autre'" >&3
call_dar 'autre' '/home/.space/konic/autre/'
echo "Message : Sauvegarde de 'autre' effectuée" >&3
sleep 2
;;
("5")
echo "Message : Sauvegarde de 'Mes vidéos' effectuée" >&3
call_dar 'Videos' '/home/.space/konic/Mes vidéos/'
echo "Message : Sauvegarde de 'Mes vidéos' effectuée" >&3
sleep 2
;;
("6")
echo "Aucune idée comment éteindre, sans les droits root, en tant normal c'est shutdown "
echo "Message : Normalement l'ordinateur doit s'éteindre tout seul ^_^" >&3
sleep 2
echo call : /usr/bin/gnome-power-cmd.sh shutdown
/usr/bin/gnome-power-cmd.sh shutdown
;;
esac
shift
done
}
# On demande à traiter la réponse de zenity
# les fonctions doivent être écrites avant leur appel
toBackup $reponseIFS
echo "Message : Fin du script de sauvegarde. Bye" >&3
exec 3>&-
exit 0;
Voilà, pour le code principal, un grand merci à MulX, moi j'ai juste fait joujou avec zenity et la présentation :cool: Ben oui, c'est mon 1er script 😛
Il reste un petit problème :
/usr/bin/gnome-power-cmd.sh shutdown ne marche pas, dommage. En cherchant, j'ai trouvé des solutions, mais rien de simple pour moi.
[La suite]
* Amélioration éventuel de tout ça
* Extinction automatique de l'ordi
* Proposer un choix supplémentaire : graver sur dvd