Quand tout se passe bien :
- tant que rien n'est branché, le volume DPSM n'apparaît pas et le dossier
/Volumes/VOLUME-DPM n'existe pas ;
- lorsqu'on branche l'appareil, le dossier /Volumes/VOLUME-DPM est créé et le disque externe est monté sur ce dossier ;
- lorsqu'on débranche l'appareil, le disque externe est démonté et le le dossier est supprimé.
Mais il arrive parfois que ce ne soit pas le cas (arrêt intempestif par exemple) et le dossier demeure malgré l'absence du périphérique auquel il correspond. Ce qui fait qu'à la prochaine connexion on peut se trouver avec un dossier
/Volumes/VOLUME-DPM (2) qui est celui contenant les fichiers à déplacer.
Il faut donc être un peu prudent et essayer d'envisager tous les cas.
On ne peut pas non plus se baser uniquement sur les périphériques : quand on connecte un appareil, un ou plusieurs fichiers spéciaux sont créés, des
devices, qui permettent d'accéder aux divers éléments proposés par ce périphérique. Pour les périphériques de stockage, c'est quelque chose comme
/dev/disk2 (le périphérique en lui-même) et
/dev/disk2s1 (la première partition de ce périphérique). Mais si tu as plusieurs périphériques, les numéros peuvent varier suivant l'ordre de branchement ou de découverte lors du démarrage. Donc, là encore, on risque d'être feinté par le système.
Tout ceci pour montrer que ce n'est pas aussi simple qu'on peut le croire et qu'il peut y avoir un petit peu de programmation à faire dans ton script.
Ce qui pourrait aider serait de savoir si quelque chose permet de repérer
à coup sûr l'appareil. Un fichier présent dans le volume monté par exemple.
-----
Les précautions d'usage ayant été énoncées, ce serait moi, je ne me casserais pas la tête et je ferais un truc vraiment basique et peu élégant :
- un petit script (bash) qui fait le boulot ;
- programmer le lancement de ce script avec CRON toutes les minutes.
Et le script serait quelque chose comme (c'est juste un exemple) :
Bloc de code:
#!/bin/bash
# On teste que le script n'est pas déjà lancé
[ -f /var/tmp/copieDPM ] && exit 1
# On indique que le script est lancé
echo $BASHPID > /var/tmp/copieDPM
# On cherche les fichiers à copier et on les déplace
if [ -d /Volumes/VOLUME-DPM ] ; then
find /Volumes/VOLUME-DPM -name "*.brol" -exec mv {} /le/dossier/destination \;
fi
# On a fini
rm /var/tmp/copieDPM
exit 0
C'est l'idée (il faut adapter la chaîne recherchée et le dossier destination à ton contexte). Ensuite il faut savoir si il y a des dossiers destinations différents suivant divers types de fichiers ; si, par exemple, on veut créer un sous-dossier horodaté dans le dossier destination, où l'on copiera les fichiers (pour pas tout entasser au même endroit) etc.
C'est déjà une première solution simple et peu coûteuse, sans ajout de logiciel, histoire de répondre au besoin immédiat.
-----
Pour
launchd, c'est plus subtil. Cela pourrait être quelque chose comme ça :
Bloc de code:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.DPMScanAndMove</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/myDPMMove.sh</string>
</array>
<key>QueueDirectories</key>
<array>
<string>/Volumes/VOLUME-DPM</string>
</array>
</dict>
</plist>
en supposant que le script précédant est nommé "
/usr/local/bin/myDPMMove.sh".
La documentation pour l'écriture de jobs pour
launchd est
ici.
Note : pour que le script puisse être lancé, ne pas oublier de le déclarer comme exécutable avec la commande :
Bloc de code:
sudo chmod +x /usr/local/bin/myDPMMove.sh