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".

#1 Le 16/01/2009, à 00:21

kon!c

[script] Sauvegarde automatique au montage d'un periphérique

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 neutral heureusement MulX est là smile

[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 tongue

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

Hors ligne

#2 Le 20/01/2009, à 06:14

Shanodyn

Re : [script] Sauvegarde automatique au montage d'un periphérique

Salut !

Je me disais justement que je voulais un truc comme ça pour gérer mes sauvegardes.
Je vais tester ça tout à l'heure.

Merci d'avoir mis les mains dans le cambouis wink

Hors ligne

#3 Le 21/01/2009, à 02:06

madin60

Re : [script] Sauvegarde automatique au montage d'un periphérique

Nickel,
Je voulais réaliser ce genre de script, mais je ne savais pas comment faire pour le lancement auto. Merci beaucoup pour l'astuce, je n'y aurai certainement j'aimais songé...
Comme quoi l'union fait la création!:lol:

Hors ligne

#4 Le 23/01/2009, à 00:08

kon!c

Re : [script] Sauvegarde automatique au montage d'un periphérique

Ha ba tiens, pour une fois que je ne viens pas sur le forum en pleurant : "Whouin, j'ai un truc qui ne marche pas comment on fais ?"
Ça fais plaisir d'avoir un retour positif cool

Hors ligne

#5 Le 07/02/2010, à 20:52

ElGatoNegro

Re : [script] Sauvegarde automatique au montage d'un periphérique

Salut,
La ligne pour l'extinction du PC est plutôt (depuis Koala) :

/usr/lib/indicator-session/gtk-logout-helper --shutdown

Hors ligne

#6 Le 07/02/2010, à 22:02

jewaz

Re : [script] Sauvegarde automatique au montage d'un periphérique

Merci pour ton script, mais par contre, etant neophyte sous linux dans la creation de script, ,ou est ce que je place le script:
- a la racine du pc?
- dans le repertoire bin?
-autre part?

Hors ligne

#7 Le 21/12/2010, à 12:35

kon!c

Re : [script] Sauvegarde automatique au montage d'un periphérique

Au cours des mes différentes bidouilles, j'ai égaré ce script, je le retrouve avec plaisir ici ... et ho un message !

Réponse tardive avec mes excuses :
On peux le mettre ailleurs, mais ici le script est sur la racine de support.
C'est défini ici en gras :

kon!c a écrit :

...
Sur la racine du disque, créer un fichier nommé autorun.inf
avec le code suivant
open=/bin/bash ./autorun.sh
Ensuite on crée un script nommé "autorun.sh"

Hors ligne

#8 Le 28/06/2011, à 10:19

enebre

Re : [script] Sauvegarde automatique au montage d'un periphérique

Bonjour, j'ai 4 questions.

1) Le fichier autorun.inf je le place dans / c'est lui qui va lancer autorun.sh qui est placé également dans / , suis je correct ?
2) autorun.inf et autorun.sh doivent ils être cochés pour l'exécution ?
3) Pourquoi un point . devant la barre ./ ?
4) Dois je adapter des ligne de votre script fonction de mon système ?


c'est vrai que c'est pas aussi évident qu'il y parait. C'est simple mais l'incertitude de ces deux trois détails inquiètent.J'ai bien suivi ce qui est demandé et rien ne se passe, si ce n'est que le script s'affiche à la racine de mon disque externe lorsque je le branche: mais je me demande si ce script proviendrait d'une autre tentative de faire un backup, sur windows ils n'ont pas l'air de ce casser la tête comme sur linux en voulant faire un backup.

#!/bin/bash
configFile="/home/user/bin/rdiff-backup-manager.conf" #fichier de conf contenant la date de la prochaine sauvegarde
backupDirectory="/media/disk/rdiff-backup-user/"
origDirectory="/home/user/"
#liste des dossiers a sauvegarder (ils sont tous sous /home/user/)
directoryList="ressources Comptes Desktop Documents Musique-divers Photos SiteWeb Vidéos bin .mozilla .gmusicbrowser"

#Lecture dans un fichier de conf de la date de la prochaine sauvegarde
if test -s $configFile
then
    nextUpdateDate=$(cat $configFile)
    echo "La date de la prochaine sauvegarde est le " $nextUpdateDate 
else
    echo "fichier de conf absent"
    nextUpdateDate=0
fi
todayDate=$(date '+%Y%m%d')
echo "Nous sommmes le " $todayDate
if  (test $nextUpdateDate -le $todayDate)
then
    #Date dépassée => on propose de faire la sauvegarde
    if zenity --question --text="Faire la sauvegarde automatique maintenant ? (Brancher le Disque Externe auparavant)"
    then
        #verifier la presence du dossier de sauvegarde
        if test -d $backupDirectory
        then
            #sauvegarde à faire ici !!!
            for i in $directoryList; do
                nice -n 19 rdiff-backup $origDirectory$i $backupDirectory$i && nice -n 19 rdiff-backup --remove-older-than 1M --force $backupDirectory$i
            done
            zenity --info --text="La sauvegarde est terminée."
            #mise à jour du fichier de conf avec la date de la prochaine mise à jour
            echo $(date '+%Y%m%d' --date '7 days') > $configFile
        else
            zenity --error --text="Dossier de sauvegarde non trouvé."
        fi
    else
        zenity --info --text="La mise à jour sera à nouveau proposée au prochain démarrage."
fi
else
    echo "rien a faire"
fi

Dernière modification par enebre (Le 28/06/2011, à 11:12)


Voyager 13.10 en 32  bits see but unseen & seen but not see - site

Hors ligne

#9 Le 21/07/2012, à 14:01

Hernou

Re : [script] Sauvegarde automatique au montage d'un periphérique

chez moi sur la 12.04, quand je fait ça, ça me renvoi une erreur comme quoi il ne trouve pas le programe pour lancer l'exécution automatique :'(

Dernière modification par Hernou (Le 21/07/2012, à 14:01)

Hors ligne

#10 Le 21/07/2012, à 16:06

MulX

Re : [script] Sauvegarde automatique au montage d'un periphérique

Je ne sais pas quel script tu utilises, mais il faut sûrement installer le logiciel qui est utilisé dans le script.
Cela peut être :
[*]dar[/*]
[*]rsync[/*]
[*]rdiff-backup[/*]

;-)


Tchous, MulX. -- PlayOnLinux :) -- Gopherspace !   -- 6 * 9 = 42 (si si) --  Humph? -- Follow me!

Hors ligne

#11 Le 21/07/2012, à 16:15

Hernou

Re : [script] Sauvegarde automatique au montage d'un periphérique

non rien à voir avec ça, le logiciel qu'il doit utiliser c'est le bash je pense et il y est par défaut.
J'ai fait un test avec un script qui ouvre une fenêtre d'information zenity et ça ne fonctionne pas.
Sur mon disque j'ai :

autorun.inf
autorun.sh

Dans mon autorun.inf :

[autorun]
icon=monicone.gif
open=/bin/bash ./autorun.sh

et ça me laisse juste un message d'erreur comme quoi il ne trouve pas le programe avec lequel executer l'execution automatique...

Hors ligne

#12 Le 21/07/2012, à 18:11

MulX

Re : [script] Sauvegarde automatique au montage d'un periphérique

Je n'ai rien pour tester mais je suis sûr à 100% que bash est présent sur une installation Ubuntu.
Le problème doit être ailleurs, peut être les permissions du fichier autorun.sh ou simplement le format de l'autorun qui a évolué.


Tchous, MulX. -- PlayOnLinux :) -- Gopherspace !   -- 6 * 9 = 42 (si si) --  Humph? -- Follow me!

Hors ligne

#13 Le 21/07/2012, à 18:59

Hernou

Re : [script] Sauvegarde automatique au montage d'un periphérique

alors les permission j'ai regardé ça, et effectivement j'ai pas pensé à le dire mais la commande chmod +x ne fonctionne pas, j'ai beau changer les permission elles se remettent comme avant hmm

Hors ligne

#14 Le 28/07/2012, à 18:19

toulipe

Re : [script] Sauvegarde automatique au montage d'un periphérique

Il y a une solution beaucoup plus propre pour faire la même chose, et qui est décrite ici : http://ninetynine.be/blog/2009/03/ubunt … -on-mount/
Votre script est exécuté en root, donc pas de problèmes de droits.

Hors ligne

Haut de page ↑