Cela fait longtemps que je rêve de proposer des ateliers de pratique autour de la manipulation pratique de données numériques, et de le faire IRL, parce que le télétravail à 100%, ça vous épuise son homme. Ce que j’ai eu l’occasion de réaliser qui ressemble un tant soit peu à ça, c’est une journée de formation aux métadonnées de l’objet audiovisuel aux masters 2 INA Patrimoine audiovisuel. Mais j’imaginerais volontiers une série de sessions à destination de professionnels de l’information, de préférence dans une institution qui prend le numérique au sérieux. Plutôt le Cent quatre ou la Gaîté lyrique que la BnF, encore que cette dernière option ne soit pas exclue bien sûr. (Eh oui, tout cela est très parisien, mais exclusivement parce que c’est là que j’habite.) Si ça vous attire, parlons-nous…
Ce billet de blog a donc pour objectif de formaliser ce que je considère comme les principales opérations de manipulation de données patrimoniales numériques dans une perspective de préservation. La démarche est purement empirique : j’ai pris mon cahier d’apprentissages pratiques commencé fin 2023 et y ai sélectionné tout ce qui me semblait avoir rapport à la préservation – collecter, analyser, corriger, transformer pour donner accès. Je compile donc ce que j’aurais voulu apprendre le plus tôt possible pour être à même d’aborder tranquillement une livraison de données numériques.
Si vous voulez donner votre avis sur ce qui manque ou ce qui pourrait être envisagé différemment, n’hésitez pas à utiliser les commentaires (ça me changera des dizaines de faux commentaires, dont certains sont générés par IA à partir de mon texte, ce qui les rend difficiles à identifier). Vous pouvez également utiliser ce cryptpad, qui est ouvert aux commentaires et à l’édition.
Bien que ce petit parcours soit sans conteste orienté vers les données patrimoniales, et s’efforce donc de maintenir l’utilisabilité et l’authenticité des données confiées, il évite les outils et standards produits par et pour des institutions patrimoniales. Ma conviction est que les particularités de ces dernières ne justifient pas, la plupart du temps, des développements logiciels spécifiques, mais plutôt une certaine logique, une démarche et une attention à l’intégrité des données.
1. Le « tronc commun »
Cette partie a pour but de détailler une série d’opérations qui peuvent être réalisées sans adaptation particulière au type de contenu. Autrement dit, elles seront appliquées de manière très similaire à une base de données textuelles ou à une collection de photographies numériques.
1.1. Les bases
Il s’agit là de présenter des pré-requis nécessaires aux étapes suivantes, mais également de pointer les fonctionnalités d’outils standards – en particulier, le système d’exploitation Windows – qui ne sont pas toujours connues et pourtant fort utiles. La partie s’articulerait en trois sections :
- Les bases des systèmes de fichier
- L’explorateur de fichiers
- Une initiation à la ligne de commande
1.1.1. Les bases des systèmes de fichier
Cette section aborderait des opérations que nous réalisons tous les jours, sans vraiment savoir ce qu’elles impliquent : dater un fichier, obtenir des informations sur ce que les bibliothécaires appellent l' »importance matérielle » (poids, nombre de pages, durée, etc.), ouvrir un fichier, supprimer un fichier.
Savoirs : les métadonnées du système de fichiers : nom de fichier, chemin, dates, mais aussi les attributs étendus, les fichiers cachés. La section pourrait également traiter de la persistance des données supprimées, qu’on développerait plus longuement dans la partie sur la récupération de fichiers supprimés.
1.1.2. L’explorateur de fichiers
Cette partie explorerait les fonctionnalités bien pratiques d’un outil qu’on utilise sans même y penser : l’explorateur de fichiers. On y détaillerait notamment ses différents panneaux et ses options.
Outils : la partie se concentrerait sur l’explorateur de fichiers Windows, mais on pourrait aussi présenter des alternatives telles que Total Commander, Double Commander, TreeSize, Midnight Commander…
On en profiterait pour rappeler tous les raccourcis clavier qui permettent de gagner du temps quand on manipule des fichiers avec l’interface graphique de son système d’exploitation.
1.1.3. La ligne de commande
Cette section est à mon sens incontournable dès qu’on veut progresser dans le domaine de la préservation numérique pratique. A ce niveau, je pense plutôt à une initiation comme on en trouve plusieurs, y compris par des spécialistes de préservation1. J’envisage de présenter plutôt le langage Bash, qui demandera aux utilisateur·ice·s de Windows d’installer préalablement le Windows Subsystem for Linux (WSL).
Plutôt que d’aborder immédiatement des outils de préservation, je pense que cette initiation devrait se limiter à des opérations de base (créer des fichiers, des dossiers, se déplacer dans l’arborescence) mais aussi découvrir un ou deux outils très puissants tels que find pour trouver des fichiers selon des critères précis de date, poids, nom, etc.
1.2. L’intégrité des données
Cette seconde partie aborderait les opérations de base de la préservation du train d’octets (bit-level preservation).
1.2.1. Calculer une somme de contrôle
La première section, très basique, consiste à aborder les différentes manières de créer une somme de contrôle, individuellement ou par lot.
Outils : md5sum et ses petits camarades, rhash, mais aussi les variantes avec interface graphique (7-zip, QuickHash, Jacksum, etc.).
1.2.2. Enregistrer une empreinte numérique
Dans cette section, on devrait aborder un certain nombre de standards permettant d’encoder les métadonnées d’intégrité dans un « manifeste ». On pourrait comparer la manière dont BagIt, METS, SEDA et PREMIS s’acquittent de cette tâche.
1.2.3. Vérifier une empreinte numérique
Bien que l’audit d’intégrité soit une opération hautement automatisée dans tous les systèmes de stockage et de préservation, il est utile de connaître les moyens de le faire manuellement. On pourrait évoquer alors les outils comme la commande zip (pour les fichiers ZIP), mais aussi Bagger (pour les paquets BagIt).
1.3. Copier des données
La copie robuste et sécurisée mérite à mon avis une partie à part, d’autant que les méthodes différeront de la source des données.
1.3.1. Depuis un support de transfert
Si on reçoit un support de transfert, c’est-à-dire un support utilisé exclusivement pour transmettre des données à une institution de conservation, on optera sans doute pour une copie logique des données. Les méthodes classiques de copier/coller sont alors à éviter, particulièrement si le volume de données est important.
Outils : robocopy pour Windows, ou ses interfaces graphiques Teracopy / Fastcopy, et rsync pour les systèmes Unix.
1.3.2. Depuis un support de travail
Si les données se trouvent sur un support de travail, ou si le support est ancien et potentiellement fragile2, on pourra envisager la création d’une image disque.
Idéalement, et bien que la connaissance de ce sujet soit presque inépuisable et que je n’en aie moi-même qu’une minuscule portion, je serais favorable à ce qu’on aborde dans cette partie les supports de données les plus courants, ainsi que les différents types de connectique.
Outils : dd, dc3dd, ddrescue, guymager.
1.3.3. Copier des données en ligne
Il peut arriver aussi qu’on ait besoin de récupérer des données en ligne, individuellement ou par lot. Un petit aperçu des outils disponibles ne serait pas du luxe à mon avis !
Outils : curl, wget, monolith, mais peut-être aussi un outil de capture manuelle interactive comme Archive Webpage.
1.3.4. Copier des données depuis/vers le cloud
C’est un domaine que je connais mal, mais le sujet me semble important à traiter. A minima, je pense notamment à une initiation à l’outil rclone.
1.4. Identifier les doublons stricts
Une fois qu’on a généré des sommes de contrôle et copié des données vers un espace de traitement et de tri, une des opérations qu’on peut souhaiter réaliser est l’identification de doublons « stricts »3. Ce qu’on souhaite en faire ensuite reste à l’appréciation des archivistes !
Pré-requis : connaissance des attributs du système de fichiers.
Outils : tout outil capable de calculer une somme de contrôle sur un fonds complet (Archifiltre, DROID, FileTrove, rhash etc.).
1.5. Extraire et analyser une arborescence
Une des problématiques fondamentales des archivistes face à un fonds de plusieurs gigaoctets – voire plusieurs téraoctets – est de comprendre l’organisation des fichiers selon l’arborescence définie par la productrice ou le producteur. Cette opération demande une bonne connaissance des méthodes de travail de ces derniers par l’archiviste et, éventuellement, une certaine connaissance des systèmes d’exploitation pour identifier où peuvent se trouver des contenus produits par le créateur ou la créatrice. Outre les explorateurs de fichiers, on mentionnerait Archifiltre et la commande tree.
1.6. Créer et manipuler des fichiers conteneurs
La manipulation de fichiers conteneurs est fondamentale : il est nécessaire de savoir comment extraire le contenu de paquets ZIP ou TAR (on pourrait se limiter à ces deux formats), y ajouter des fichiers, en contrôler l’intégrité, en extraire des fichiers spécifiques, et à l’inverse empaqueter des fichiers multiples.
1.7. Identifier le format et exploiter les résultats
Cette partie présente l’identification du format comme une opération de base de la préservation numérique.
1.7.1. Identifier le format des fichiers
Je ne détaillerai pas ici ce que recouvre cette opération, mais vous pouvez vous reporter à la description qu’on en a faite pour le projet EOSC EDEN. L’objectif n’est pas seulement de s’assurer que l’on est capable de savoir que nos fichiers ont un format identifiable, mais surtout de repérer des risques potentiels liés à des problèmes d’identification.
Savoirs : les moyens d’identifier un format (extensions, type MIME, PUID, QID, etc.) et les registres de format (PRONOM, Wikidata, Library of Congress Format Descriptions, wiki Just Solve the File Format Problem, etc.).
Outils : DROID, Siegfried, TrID, Unix File, Apache Tika, github linguist pour le code, Magika pour les exécutables. L’outil Freud, qui interprète en termes de risques les résultats des outils d’identification basés sur PRONOM, serait un bon complément.
1.7.2. Repérer, supprimer ou exploiter les fichiers système et d’application
En complément, on peut mentionner l’apport du logiciel open source FileTrove pour identifier automatiquement certains fichiers système en cherchant leur somme de contrôle dans la base de données NSRL. Encore une fois, seul·e l’archiviste est en mesure de décider quoi faire de ces fichiers – les ignorer ou les conserver pour les besoins de futures chercheuses.
Savoirs : un aperçu de ce que sont les fichiers système et d’applications.
1.7.3. Avancé : développer un motif d’identification de format de fichier pour PRONOM
Pour les plus acharnés, cette section avancée aborderait l’observation d’un fichier sous la forme d’un flux de données hexadécimales, le développement de motifs d’identification de format ou « signatures numériques » pour PRONOM. Le périmètre serait globalement celui du PRONOM Starter Pack.
Outils : éditeur hexadécimal (par exemple, hexed.it), utilitaire ffdev.info, couple Siegfried + Roy, commandes xxd et hexdump, TrIDScan.
1.8. Récupérer des fichiers supprimés
La récupération de fichiers supprimés peut être nécessaire, notamment pour informer un·e donateur·ice de l’existence sur ses supports de transfert ou de travail de données dont elle n’avait pas conscience. J’ai brièvement abordé ces opérations dans ce billet et cet autre, mais il me semble là encore nécessaire de montrer comment cette opération fonctionne, ne serait-ce que pour aider les archivistes à communiquer clairement sur le risque que cela pose aux potentiels donateurs.
Outils : fiwalk, binwalk, testdisk/photorec, la commande dd.
2. Parties à développer pour chaque type de contenu / format
Je m’attends à ce que les parties suivantes doivent être développées par type de contenu (par type de format – images raster, son, vidéo, PDF, etc. voire, peut-être encore mieux, par secteur d’activité – graphisme web, photographie, vidéo à la demande, livre numérique, etc.).
2.1. Analyser des fichiers
Sous ce titre assez général, je réunis toutes les méthodes qui visent à comprendre les caractéristiques et le contenu des fichiers, et à en extraire la partie qui nous intéresse.
2.1.1. Déterminer les propriétés et extraire les métadonnées internes
L’extraction de métadonnées vise à déterminer la valeur de la propriété d’un fichier en vue de réaliser une opération particulière. Que ce soit pour déterminer les producteur·ice·s d’un fichier, sa qualité, son contenu réel, cette opération est le préalable à bon nombre de manipulations. Je répugne à considérer cette opération comme un but en soi, donc séparément de l’opération qu’elle permet, mais il est vrai que certains outils en ont fait leur spécialité (Exiftool, Apache Tika, etc.). Dans de nombreux cas, les outils sont spécifiques à un ou plusieurs type(s) de contenu (MediaInfo pour l’audiovisuel, ImageMagick pour les images raster), voire à un format (la commande pdfinfo de l’outil Xpdf pour le PDF, flac pour le FLAC, etc.).
2.1.2. Explorer / exploiter les métadonnées internes
Dans cette section, je présenterais volontiers l’articulation des outils d’extraction précédemment cités avec OpenRefine, afin de nettoyer et explorer les métadonnées internes et autres propriétés des fichiers.
2.1.3. Rechercher en plein texte
J’ai déjà décrit l’intérêt d’une recherche plein texte sur un fonds d’archives dans un billet précédent. Je vous renvoie à ce que j’y raconte pour un aperçu de ce que je pense devoir transmettre dans cette section.
Je ne connais pratiquement rien sur la reconnaissance optique de caractères (OCR), mais je pense que c’est bien d’aborder rapidement le principe pour comprendre ce que fait Apache Tika quand il applique Tesseract sur les images.
Outils : Apache Tika, grep, pdfgrep, la commande pdftotext de l’outil Xpdf, etc.
2.1.4. Identifier les risques liés à un format
Une fois le format identifié et les propriétés extraites, on essaiera de croiser ces informations avec ce qu’on sait des risques portant sur la préservation des données numériques. C’est la section où on aborderait les formats dans une logique de prévention des risques appuyée sur une connaissance de leurs caractéristiques, usages et contenus potentiels.
Pré-requis : des connaissances de base sur l’encodage des données binaires (hexadécimal, base64, etc.).
Savoirs : les structures de base des formats les plus courants (XML, formats tabulaires T/CSV, JSON, ZIP). Les risques principaux portant sur les données : le chiffrement, les contenus inattendus dans un fichier, les dépendances, etc.
Outils : on pourra évoquer d’autres outils que ceux mentionnés dans la section sur l’extraction des propriétés des fichiers, plus spécialisés dans l’identification de risques ou fonctionnalités rares des fichiers, par exemple oleid pour les fichiers DOC, verapdf pour les PDF, etc.
2.1.5. Identifier les informations sensibles
J’avais aussi évoqué ce problème dans un précédent billet : comment identifier les informations potentiellement sensibles dans une masse de données ? L’objectif étant que la collecte et la conservation de celles-ci ne nuisent pas à la personne qui les a confiées à l’institution de conservation. La tâche est complexe, mais elle peut être aidée par certains outils, généralement développés par les spécialistes de digital forensics dans un tout autre but.
La section pourrait également donner l’occasion d’aborder les méthodes de caviardage (redaction) – et leurs limites !
Pré-requis : connaître le principe des expressions régulières me semble indispensable – des quantités de tutoriels existent en ligne.
Outils : bulk_extractor, Metadata Anonymisation Toolkit 2 (MAT2), ePADD pour les e-mails, Stirling PDF pour les PDF.
2.1.6. Valider la conformité à la spécification du format
L’opération de « validation du fichier » au regard de son format est également une tâche canonique de la préservation numérique. Elle a beaucoup été décriée, car elle ne dit pas toujours grand-chose des problèmes réels de restitution du contenu, et peut conduire au rejet de fichiers affectés d’un problème mineur de syntaxe. Elle est pourtant utile, pour peu qu’on sache évaluer le niveau de gravité de ces problèmes de structure.
Outils : très spécifiques à un format donné, toujours : JHOVE pour une quinzaine de formats parmi les plus courants dans les institutions de conservation, odfvalidator pour les formats ODF, flac pour les fichiers FLAC, etc.
2.1.7. Avancé : explorer la structure interne des fichiers
Pour résoudre des problèmes de structure identifiés par les outils de validation, des outils spécialisés dans l’exploration de la structure des fichiers peuvent être utiles. Leur point commun est de disposer de bibliothèques de structure interne de formats, qui permettent de disséquer les fichiers en micro-structures.
Pré-requis : des connaissances sur les structures de fichiers de base.
Outils génériques : exiftool, fq, Kaitai Struct, 010 editor, etc.
Outils spécifiques à un format : itext-RUPS et la commande PDFDebugger de l’outil PDFBox pour le PDF.
2.2. Avancé : réparer
Dans certains cas, il est nécessaire d’acquérir des fichiers invalides et il n’est possible ni d’en demander de plus « propres », ni de les conserver tels quels car les problèmes de structure posent des problèmes aux logiciels devant les restituer ou les modifier. Cette partie avancée introduira les enjeux liés à cette « restauration numérique »4.
2.3. Convertir / transformer
Que ce soit pour normaliser dès le versement vers un format de préservation que l’institution maîtrise, pour limiter un risque portant sur un format abandonné par ses créateurs ou pour générer des dérivés de consultation, la conversion est une opération courante mais délicate si l’on souhaite conserver le maximum d’information et de fonctionnalités du fichier d’origine. Ces opérations nécessitent généralement une bonne connaissance des propriétés spécifiques aux types de contenu qu’on souhaite traiter.
Outils : ImageMagick pour les images fixes, pandoc pour les textes, ffmpeg ou handbrake pour les vidéos.
2.4. Comparer des fichiers
Je vous renvoie à ce sujet à mon billet de blog « Aurais-je fait une boulette ? » Comparer deux fichiers a de multiples usages ; dans ce billet, je propose des solutions pour mesurer l’impact d’une réparation de fichier invalide.
Outils génériques : BeyondCompare, les commandes diff et cmp, le couple bsdiff/bspatch.
En complément de l’identification des doublons « stricts » mentionnés plus haut, d’autres outils spécfiques peuvent également aider à identifier des doublons « de contenu », dont la somme de contrôle diffère, par exemple parce que leurs métadonnées internes sont différentes ou que leur compression n’est pas la même.
Outils : fonction compare de l’outil ImageMagick, audio-compare, comparepdf pour des PDF.
3. Conclusion
Après avoir écrit tout cela, je mesure à la fois l’ambition que cela représente, le besoin de croiser les compétences de spécialistes très nombreux, et le chemin qui me / nous reste à parcourir. Je ne me décourage pas, car je pense qu’il y a de l’espace pour apprendre collectivement à l’occasion d’ateliers davantage conçus comme des espaces de pratique collaborative que comme de véritables formations. J’attends et espère vos retours…
- Par exemple celle d’Ashley Blewer : https://training.ashleyblewer.com/presentations/cli.html ou celle de Library Carpentry: https://librarycarpentry.github.io/lc-shell/. ↩︎
- Pour une description plus complète des critères de choix de cette méthode, on consultera les Disk Imaging Decision Factors, définis par le groupe DANNNG!, disponible sur https://dannng.github.io/disk-imaging-decision-factors.html. ↩︎
- Ce que j’entends par « doublons stricts » est l’identification de fichiers qui ont exactement la même somme de contrôle, donc exactement le même contenu, bien que leurs métadonnées au sein du système de fichiers puissent varier. ↩︎
- D’autres cas ont sans doute été documentés, mais je vous renvoie vers ceux que je connais le mieux pour y avoir été confronté et les avoir résolus : ici et ici. ↩︎
geekiviste
Merci pour ce travail ! Puisque nous y sommes invités, je me permets de rajouter un petit commentaire : Dans les bases, il faudrait aussi, je pense, ajouter des choses encore pls basiques : le binaire, les bases sur le hardware (identifier le fonctionnement des composants comme la carte-mère, la différence entre de la mémoire vive et morte, etc.) et le software (le fonctionnement des différents systèmes d’exploitation et le lien avec le hardware).
BCaron
Tout à fait d’accord, je crois que je sous-estime encore les pré-requis, et qu’il faudrait les creuser davantage. Je pense que sur les bases SW/HW ça peut être fait en renvoyant vers des ressources (encore que je ne sais pas lesquelles). Mais j’intégrerais bien une partie sur l’encodage des données binaires.