Présentation
Bienvenue sur le Joueb de Miellaby.
Idées et réflexions à partager.
Rubriques
Liens pour rebondir
|
Idées en vrac: download multiple ; backup intelligent
Sur le download multiple
- 1er constat: les informaticiens sont des idiots. Les navigateurs web évoluent en
intégrant toujours plus de fonctionnalités "bling bling" alors que
certaines interactions de base sont toujours aussi peu ergonomiques.
- Exemple: le download multiple. Alors que les sites web permettant
de gérer des collections de données (vidéo, images, fichier) se
multiplient, pourquoi n'existe t'il pas une méthode simple permettant
de rappatrier plusieurs fichiers à la fois depuis son navigateur?
- La solution simple pourrait être de standardiser par une RFC un
type mime "ensemble de fichiers" correspondant à une archive (à la zip)
que le navigateur décompacterait à la volée.
- Si les navigateurs étaient modifiés en ce sens, alors on pourrait
sélectionner plusieurs items dans une application web, appuyer sur un
bouton download, et le navigateur ouvrirait une boîte de sélection de
dossier local. Une fois le téléchargement terminé, tous les items
téléchargés se retrouveraient sagement posés dans le dossier choisi. En
cas de conflits avec des fichiers locaux existants, ce serait bien que
le navigateur négocie avec l'utilisateur le "comment faire"...
- En attendant, certains sites fabriquent des zips à la volée.
Problème: la décompression du zip nécessite un utilitaire et une action
utilisateur pas forcément évidente.
- D'autres fabriquent des archives auto-extractibles. Problème, l'auto-extractible affiche souvent une IHM pas très sexy.
- Pour l'instant, la meilleure solution consiste en un
auto-extractible complétement "seamless": un double click =
décompression dans le répertoire courant + suppression du fichier
compressé.
Backup intelligent
J'ai étudié récemment la stratégie employée dans 2 outils récents,
robustes et efficaces concernant la copie, le versionnage et la
synchronisation de fichiers, à savoir "git" et "rdiff-backup". J'en ai
déduis une stratégie très simple et redoutablement efficace pour
synchroniser 2 arborescences de fichiers sans la nécessité d'installer
une paire de logiciels dédiés sur les 2 conteneurs.
- Soient un dossier local et un conteneur de fichiers distant traditionnels, sans fonctionnalités particulières pour
faciliter la synchro (à la SyncML ou rdiff). Par exemple: une clef USB,
un partage CIFS, un serveur FTP, un dossier sur un File System
ordinaire, une solution de stockage en ligneà la box.net, etc.
- On va exécuter le script de backup sur la machine qui héberge le
dossier local. Le but est de synchroniser ce dossier local avec une
copie sur le support distant en limitant le transfert de données vers
ce support (très couteux) et en essayant le plus possible de faire
appels à des opérateurs de déplacement/renommage/copie du support, que
l'on suppose au contraire peut coûteux.
- Lors d'une synchro, le script commence à générer une table des
signatures de tous les fichiers locaux. Une signature pourrait être un
haché cryptographique SHA-2 (comme "git") réputé capable d'identifier
de manière unique n'importe quel fichier présent et futur. La table répertorie toutes les paires (chemin-de-fichier/signature). Le raffraîchissement ultérieure de cette table peut
être accéléré en stockant une deuxième signature locale afin
d'identifier les fichiers immobiles entre 2 synchro successives
(inode,taille,timestamp).
- Puis le script télécharge la table correspondante sur le conteneur distant.
- Enfin, le script fait des comparaisons entre les 2 tables et applique les changements. Par exemple pour un fonctionnement en mirror source/destination classique, cela donne:
- signature dans la source absente dans la destination: on transmet
le fichier à l'emplacement prévu (si plusieurs emplacements, on copie
le fichier dans la destination sur les autres emplacements)
- Signature à des emplacements différents entre la source et la
destination (suite, à déplacement, renommage ou copie de fichiers). on
copie ou on déplace le fichier destination. Si le conteneur est bien fichu, l'opération ne nécessite pas le transfert de données sur le réseau.
- Signature dans la destination absente de la source: on supprime le fichier (ou les copies multiples du fichier).
- ce qui est vraiment génial (toute humilité mise à part), c'est
que non seulement on synchronise que ce qui est nécessaire, mais en
plus, lorsqu'on fait du rangement dans le conteneur source (renommage,
classement...), le conteneur destination va être resynchronisé sans
faire le moindre transfert de données. On va simplement faire appel aux
opérateurs de copie/déplacement du support distant.
|