Problème
Ma chère moitié étant prof’ de lycée, je suis directement impacté en tant qu’informaticien.
- Je dois lui choisir, configurer et payer son outil de travail à la maison (ordinateur, scanner, et tout ce qui va avec) (et oui j’en aurai acheté une partie, pas tout, et oui, les frais réels en récupèrent une petite partie dans les impôts, à condition de faire assez de kilomètres pour que les frais réels soient déjà envisageables).
- Je me tape donc le support informatique, les coups de gueule contre Word, alors qu’à titre professionnel il y a normalement des gens payés pour ça, et pas à 23 h quand je bouquine ou pianote dans une autre pièce.
- Elle bosse aussi au lycée et doit y utiliser les documents créés à la maison.
C’est le troisième point que je cherche à régler élégamment.
- L’option accès par webdav au site de la maison a été rejetée : trop geek, trop de problèmes potentiels (accès, sécurité…).
- Reste le plus simple et évident (mais y être arrivé tout de suite n’aurait pas été assez geek) : la clé USB qui contient tout ce dont elle a besoin. Une clé de 8 Go est à présent peu chère et a une contenance largement assez grande pour l’intégralité de son répertoire
Documents
.
Clé achetée. Problème réglé… au premier niveau.
Sauvegarde
Une clé c’est pas fiable, ça se perd, ça se grille. Ajoutons que comme toute allergique à l’informatique non directement utilitaire, ma chère moitié ne pensera à sa sauvegarde qu’environ une fois par mois, en général au moment où elle n’aura ni le temps ni la possibilité de la faire.
Bref : comment forcer la sauvegarde automatique quand la clé USB est montée sur le Mac ?
Time Machine est hors concours car le disque dur dédié est, lui, allumé irrégulièrement (à cause du bruit et du courant consommé ; il ne sert en fait qu’à sauvegarder le système, il n’y a pas de document critique sur le Mac).
Google renvoie à des outils purement Mac qui fonctionnent peut-être bien, souvent payants (ah, la culture Mac !), mais que je ne vais même pas tester vu que tout ce que je veux c’est pouvoir déclencher un bête rsync, mon outil préféré (dans le futur, peut-être même rsnapshot que j’utilise avec bonheur sur ma Ubuntu). Oui, à la ligne de commande, c’est pas Mac, mais j’en ai acquis un en partie parce que c’était un Unix, justement.
Le Mac utilise launchd, qui a l’inconvénient de vouloir des fichiers de config en XML, ce qui est assez casse-c… à taper. Heureusement pour une feignasse sans temps comme moi, il y a Lingon, outil libre et gratuit, merci à l’auteur. (D’ailleurs l’auteur a arrêté de maintenir, faut espérer qu’Apple fournira un éditeur dans le futur.)
En pratique
- À vérifier : que
rsync
soit présent sur le système de base. Sinon il est compris par exemple dans MacPorts qui permet d’utiliser sur Mac la plupart des outils en ligne de commande connus sur Linux.
- Dans Lingon, configurer un nouveau User Agent. Le nom suit la convention
tld
.monnomdedomaine
.cequejeveux
. Le fichier.plist
que créera Lingon se retrouvera dans/Library/LaunchAgents/
et peut au besoin y être modifié avec n’importe quel éditeur.
NB : Ne pas mettre d’accent dans le nom ; comme tant de systèmes américains, c’est pas prévu pour (no comment).
- La ligne de commande pointe ici vers un script que j’ai écrit, ce peut être n’importe quoi n’importe où (si les droits le permettent). À titre expérimental, j’avais un temps sélectionné l’application Chess, j’avais donc un échiquier qui apparaissait à chaque insertion de clé !
- Le script en question doit être autorisé pour les personnes qui vont bien. Un très laxiste
chmod ugo+rx nom_du_script
convient pour ce que je veux faire. Il faudrait verrouiller sur un utilisateur ou un groupe pour être plus propre.
- Il n’y a (au moins avec Lingon) pas de moyen d’associer un « volume » (une clé, une partition de disque, un lecteur réseau…) au script, donc Run it every time a volume is mounted, et le script devra se débrouiller avec ça.
- C’est une sauvegarde rapide, je la déclenche aussi toutes les heures.
- À la sauvegarde, Lingon dit qu’il faut carrément redémarrer. J’ai bêtement obéi, ce qui n’est pas très pratique. En utilisant
launchctl
en ligne de commande, il y a peut-être moyen d’éviter ça.
- L’exécution se voit sans problème dans la Console.
- Piège : tel que défini ici, le script sera exécuté par chaque utilisateur logué. Pour un seul utilisateur, l’option My Agents de Lingon aurait pu convenir mais je voulais quelque chose qui puisse servir à plus que la seule clef de mon utilisatrice préférée. Dans le script il faut donc tester qui est le
$USER
. C‘est également important pour les droits (le fichier.log
écrit dans/tmp
appartient, lui, à son créateur, j’en crée donc un par utilisateur, sachant que sa place serait plus dans/var/log
).
- La variable
$EXCL
contient les fichiers à ne pas sauvegarder sur le Mac. Elle dépend de chaque clé utilisée.
- Le script suivant tient compte de plusieurs clés sous deux utilisateurs. En bash je code de manière très naïve, sans subtilité esotérique, et pas par pas, le débogage y est plus laborieux que dans d’autres langages. Et quand ça marche, je ne cherche pas à optimiser et à paramétrer à donf’ comme si ça devait être réutilisé par d’autres (par exemple avec un fichier de config qui indiquerait quoi sauvegarder et où…).
Comme modifications, je pense à un répertoire de sauvegarde commun, unrsnapshot
ou carrément la copie sur une autre machine par le réseau.
#!/bin/bash #Balaye les volumes montés for VOL in `find /Volumes/ -type d -maxdepth 1` ; do echo "Volume $VOL" SHORTVOL=`basename "$VOL"` BACKUP=no CIBLE="" EXCL="" # Sauvegarde de certains volumes bien précis # en fonction de l utilisateur connecté # premier utilisateur if [ $USER = "toto" ] ; then if [ $SHORTVOL = "CLE_TOTO" -o $SHORTVOL = "TOTO_1GO" ] ; then BACKUP=yes CIBLE="/Users/toto/Sauvegardes/$SHORTVOL" fi # deuxième utilisateur elif [ $USER = "titi" ] ;then if [ $SHORTVOL = "BOULOT" -o $SHORTVOL = "PALM_1GO" ] ; then BACKUP=yes CIBLE="/Users/titi/SAUVEGARDES/$SHORTVOL" EXCL="--exclude *.mp3" fi # autre utilisateur else echo "Rien pour $USER" exit 0 fi # si backup, sauvegarder le volume if [ $BACKUP = "yes" ] ; then mkdir "$CIBLE" 2>/dev/null LOG2="/tmp/$SHORTVOL.$USER.rsync.log" echo "rsync de $SHORTVOL vers $CIBLE" echo "rsync de $SHORTVOL vers $CIBLE" > $LOG2 rsync -av --delete-after $EXCL "$VOL"/ "$CIBLE"/ >> $LOG2 echo "Fini" else echo " Pas de sauvegarde " fi done exit 0
PS : Ce billet, je le sais, sera lu à la fois par des maniaques promoteurs de la ligne de commande qui ont du mal à voir l’intérêt d’un terminal graphique pour l’administration et par des maqueux fondamentalistes émérites que Terminal effraie ; de plus il mélange les genres en mixant environnement graphique et scripts. Je m’attends donc au pire dans les commentaires (toujours mieux que l’indifférence).
6 réactions
1 De fred - 03/06/2010, 23:28
Il y a des fois où je t'envie, l'autre jour, j'ai essayé de faire tourner un programme DOS sur diskette de 1992 (ça va avec une machine à commandes numériques héritée d'un autre lycée) sur un ordinateur sous XP sans lecteur de diskette. Et en plus, il faut que ça démarre en un clic. Parfois, j'aimerais être un vrai geek pour réussir ce genre de trucs. Finalement, ça marche presque, seulement, il n'y a pas de fichier de données avec la bonne structure pour tester et faire fonctionner le programme, d'après ce que j'ai compris des messages en allemand (Murphy quand tu nous tiens...).
2 De Le webmestre - 04/06/2010, 07:35
@fred : sous DOS c'est cauchemardesque, c'est beaucoup trop limité. Passer par DOSbox, l'émulateur DOS ? Si tu peux pas tester, c'est qu'à moitié fait de toute façon.
Ah, l'Éducation Nationale et sa passion pour les technologies...
3 De fred - 05/06/2010, 09:50
Merci du conseil, effectivement, DOSbox et encore mieux DOSbox portable qu'on peut installer sur la zone de données de l'utilisateur et configurer pour émuler les lecteurs A: B: C: et DOS 5.O même si on n'a pas les droits administrateurs. Et aussi Notepad++ portable sur la clé USB pour gérer le fichier de configuration (au lycée, pour avoir accès à Notepad, il faut créer un fichier txt et pour gérer une image avec Paint, il faut passer par l'aperçu, c'est chouette les profils bien configurés...).
Remarque : DOSbox ne supporte pas xcopy, j'ai donc essayé avec xxcopy16 (merci les forums d'utilisateurs de jeux préhistoriques :) pour un peu, ça me donnerait presque envie de jouer à Simcity qui tournait sur le 486 de notre salle info au millénaire précédent...).
4 De Le webmestre - 05/06/2010, 11:18
@fred : Notepad++, excellent choix. Pourquoi c'est pas celui par défaut de Windows, je sais pas.
« Profils bien configurés » : tu veux dire que vous avez un admin réseau par chez vous ? Ouaouh !
5 De fred - 05/06/2010, 19:23
Admin réseau au lycée : En fait, il y a un prof qui a un peu de temps pour faire ça, mais il est formé sur le tas; il y a la région qui fait la hotline et qui sous-traite pour les gros trucs et l'assistant(e) TICE (le E c'est pour l'Enseignement) qui change régulièrement et qui fait aussi pas mal de surveillance des élèves, plus des gens qui bidouillent. Tout ça c'est le réseau pour les profs et les élèves, il y a aussi un réseau administratif qui est géré par une autre personne... Je pense que dans l'esprit de 90% des gens au lycée : maintenance hardware / gestion des logiciels et admin réseau c'est la même chose, ou bien ils ignorent l'existence de la fonction admin réseau. Maintenant que les notes, les bulletins, les absences, les livrets scolaires sont informatisés et que la région a investi massivement dans du matériel et de la fibre optque, ça a intérêt à marcher !
6 De Le webmestre - 05/06/2010, 22:37
@fred : Voilà, ça c'est l'EN dans toute son abomination : des milliers de postes à gérer, administrer… et ça repose sur la bonne volonté d'un passionné plus ou moins formé/compétent et forcément débordé puisque la décharge est ridicule pour une tâche si chronophage.