# Lancer un script quand un volume est monté



## pv_bain (27 Mai 2011)

Bonjour, 

Je recherche une commande applescript qui permet de lancer une action quand un volume est monté.

Je m'explique, je voudrais que lorsque je connecte ma clé USB, il lance une synchronisation d'un certain dossier sur cette clé avec un certain dossier de mon ordinateur.

J'ai essayé super duper, mais il faut que les volumes soient en HFS, le mien est en ms-dos et je vais souvent sur des pc.

J'ai essayé synctwofolders, mais il n'y a pas d'option pour lancer automatiquement une sauvegarde de 2 dossiers quand le volume est monté. (ou alors j'ai raté quelque chose ?) sinon un applescript qui envoi une commande a une action sauvegardée de synctwofolders me suffirait.

Time machine créé une image disque, j'ai besoin d'une simple copie des dossiers pour y accèder.

ibackup fait de même.

si vous avez une autre solution ?

merci d'avance.

pv


----------



## ceslinstinct (27 Mai 2011)

pv_bain a dit:


> Bonjour,
> 
> Je recherche une commande applescript qui permet de lancer une action quand un volume est monté.
> 
> ...


Bonjour

Un AppleScript en ouverture au démarrage (qui toutes les x secondes), recherche les volumes possédant une certaine capacité et un nom en tache de fond (pour ne pas prendre en compte les volumes non concernés).

Lors du montage fait une synchronisation du dossier, supprime tous les éléments inutiles pour PC (que créer le système) et démonte la clé.

C'est ça que tu recherche?

@+


----------



## pv_bain (27 Mai 2011)

euh, oui c'est a peu pres ca, mais en fait, je crois que c'est beaucoup plus simple que ça, en fait j'ai déja le script qui s'occupe de la synchronisation (cela dit, supprimer les fichiers encombrants de pc m'interesse) 

il me manque surtout la ligne applescript qui reconnait quand un volume est monté. Par exemple ma clé s'appelle "CLE PV" et bien j'aimerai que lorsque je connecte ma petite clé, le applescript qui est en mode "always running" s'execute et lance la suite du script qui en gros fait la synchronisation. 

il doit bien y avoir une commande du genre "on mount volume "CLE PV" activate..."

mais ca passe peut etre par une commande shell. ma connaissance en programmation s'arrete malheureusement au applescript (pour le moment).

Merci ceslinstinct pour ta réponse.

pv

---------- Nouveau message ajouté à 21h14 ---------- Le message précédent a été envoyé à 21h12 ----------

Je viens de relire ton message, pardonne moi a la premiere lecture je n'avais pas compris, mais oui, c'est exactement ca en fait


----------



## ceslinstinct (28 Mai 2011)

_bain a dit:


> euh, oui c'est a peu pres ca, mais en fait, je crois que c'est beaucoup plus simple que ça, en fait j'ai déja le script qui s'occupe de la synchronisation (cela dit, supprimer les fichiers encombrants de pc m'interesse)
> 
> il me manque surtout la ligne applescript qui reconnait quand un volume est monté. Par exemple ma clé s'appelle "CLE PV" et bien j'aimerai que lorsque je connecte ma petite clé, le applescript qui est en mode "always running" s'execute et lance la suite du script qui en gros fait la synchronisation.
> 
> ...


Bonjour

Une idée à tester en Applescript.

Compiler le code en décochant *Écran de démarrage* et en cochant *Rester en arrière plan*.
Placer cette application en ouverture au démarrage, et alors elle travailleras en tache de fond.

Faire un crontrôle si besoin de bloquer le code le temps de la syncronisation


```
on idle
	set mes_Volumes to list disks
	set x to false
	
	repeat with nom in mes_Volumes
		
		if (nom as string) is "CLE PV" then
			set x to true
			exit repeat
		end if
	end repeat
	
	if x is true then
		
		-- Ton code de syncronisation si c'est un AppleScript
		
		set pass to "le mot de passe"
		set theVolume to "CLE PV"
		set chemin to POSIX path of quoted form of theVolume -- Chemin de la clé USB en mode UNIX pour les commandes par le terminal
		
		-- Recherche tous les fichiers .DS_Store où qu'ils soit sur cette clé, et les éliminent
		do shell script "find /Volumes/" & chemin & " -name '.DS_Store' -exec rm '{}' \\;" password pass with administrator privileges
		-- Recherche tous les fichiers començant par ._ où qu'ils soit sur cette clé, et les éliminent
		do shell script "find /Volumes/" & chemin & " -name '._*' -exec rm '{}' \\;" password pass with administrator privileges
		
		try
			-- Supprime le dossier .Trashes qui se trouve être la corbeille de cette clé
			do shell script "rm -rd /Volumes/" & chemin & "/Trashes/" password pass with administrator privileges
		end try
		-- Démonte la clé USB
		tell application "Finder" to eject disk theVolume
	end if
	return 10 -- Temporisation de 10 secondes
end idle
```

Teste pour voir.

@+


----------

