WARC - hackathonBnF/FichesFormat GitHub Wiki
Le format WARC est un format conteneur, utilisé principalement pour stocker les fichiers collectés sur le web au fur et à mesure qu’ils sont capturés par un robot. Il combine plusieurs ressources numériques, quel que soit leur format, dans un fichier d'archivage agrégé avec des informations de contexte. Il est utilisé à la BnF depuis le 13 octobre 2014. Il a été créé par la California Digital Library et Internet Archive. Les bibliothèques nationales membres d'IIPC (Consortium pour la préservation d'internet) ont contribué à ce qu’il devienne un standard ISO. La première publication de la norme date de mai 2009.
Ce format est utilisé par les membres d'IIPC, réunissant une cinquantaine d'institutions et organismes autour de l'archivage du web. D'autres communautés utilisent également ce format tel que Rhizome, communauté consacrée aux arts numériques réunissant artistes et musées ou LOCKSS, sous les auspices de l'Université de Stanford, un réseau peer-to-peer qui développe et prend en charge un système open source permettant de collecter, de préserver et de fournir à leurs lecteurs un accès au matériel publié sur le web.
Le format WARC dérive de l'ancien format ARC et étend son usage pour mieux répondre aux besoins de collecte, de préservation, d'accès et d'échange des organisations d'archivage. Le format ARC a été créé par Internet Archive en 1996 pour archiver des copies de fichiers web. WARC permet de bien différencier les différents types d'enregistrement pour plus de structuration et de lisibilité, contrairement au format ARC.
Le format WARC 1.0 a fait l'objet d'une révision en 2017 pour préciser l'utilisation de certaines informations. Outre le contenu principal actuellement enregistré, la révision prend en charge le contenu secondaire associé, comme les métadonnées attribuées, les événements de détection de doublons abrégés et les transformations ultérieures.
Format | Date | Lien |
---|---|---|
WARC 1.0 | 2009 | ISO 28500:2009 |
WARC 1.1 | 2017 | ISO 28500:2017 |
Un fichier WARC est la concaténation de plusieurs enregistrements WARC. Un enregistrement WARC se compose d'un en-tête (header) suivi d'un bloc de contenu (payload) ; l'en-tête comporte des champs nommés obligatoires qui documentent l'URI (identifiant de l'enregistrement), la date, le type et la longueur de l'enregistrement et qui renseignent les échanges client-serveur pour chaque ressource collectée (fichier). Il existe huit types d'enregistrement WARC : warcinfo
, response
(réponse), resource
(ressource), request
(requête), metadata
(métadonnées), [revisit](http://bibnum.bnf.fr/warc/WARC_ISO_28500_version1-1_latestdraft.pdf#page=18)
, conversion
et continuation
. Chacun de ces types correspond à un résultat particulier du processus de collecte. Les blocs de contenu d'un fichier WARC peuvent contenir des ressources de n'importe quel format sous forme binaire y compris les fichiers audio ou vidéo.
Le format WARC est maintenu par IIPC et normalisé par l’ISO depuis 2009, avec une révision en 2017 (ISO 28500:2017, Information et documentation – Format de fichier WARC). La BnF diffuse une version draft de la norme sur son site bibnum.bnf.fr.
IIPC propose de la documentation supplémentaire pour implémenter le WARC.
Registre | Identifiant |
---|---|
Wikidata | Q7978505 |
Bibliothèque du Congrès | fdd000236 |
PRONOM | WARC 1.0 fmt/289 WARC 1.1 fmt/1281 |
Just Solve the File Format Problem | WARC |
La distribution des fichiers collectés au sein des fichiers WARC ne correspond à aucune logique documentaire. Le robot enregistre les fichiers capturés selon sa logique propre (et non inhérente au format WARC) dans les différents fichiers WARC disponibles jusqu'à la taille limite atteinte (définie à 1 Go pour la BnF). Le WARC est conçu pour être produit et consommé en flux avec des enregistrements concaténés.
Le format WARC ne définit pas de compression interne. Cependant la compression au format GZIP avec la méthode « deflate » est recommandée. Dans une logique de production et consommation en flux la norme nous indique:
Comme spécifié à la section 2.2 de la spécification GZIP (voir [RFC 1952]), un fichier GZIP valide consiste en n'importe quel nombre de « membres » GZIP, chacun compressé indépendamment.
Lorsque cela est possible, cette propriété devrait être exploitée pour compresser chaque enregistrement d'un fichier WARC indépendamment. Cela résulte en un fichier GZIP valide dont les sections (produites enregistrement par enregistrement) sont par elles-mêmes des fichiers GZIP valides.
Les index externes au contenu du fichier WARC peuvent alors être utilisés pour enregistrer la position de départ de chaque enregistrement dans le fichier GZIP, permettant des accès aléatoires aux enregistrements individuels sans requérir la décompression de tous les enregistrements précédent.
Notons que l'application d'une telle méthode ne produit aucun changement dans le contenu non compressé d'un enregistrement WARC individuel.
Annexe D.2, page 29
Le WARCinfo est un champ recommandé et à la BnF, le choix a été de le rendre obligatoire.
Les fichiers WARC étant des conteneurs capables de stocker n’importe quel type de fichier – qu’il s’agisse de fichiers archivés en ligne ou non – les métadonnées produites pour décrire la collection ou le déroulement de la collecte peuvent être empaquetées également dans un fichier WARC dit de métadonnées. Ainsi, un même format conteneur peut gérer les données collectées et celles documentant la collecte, et la collection de fichiers WARC peut être ainsi auto-décrite. La communauté utilisatrice de la suite logicielle NetarchiveSuite, qui réunit une dizaine de pays autour de l'archivage du web dont la BnF, a fait ce choix-là.
L'outil utilisé par la BnF pour générer des WARC est le robot de collecte Heritrix. Mais il existe d'autres outils, comme Webrecorder ou Wget qui sont également des robots de collecte, ou Warcreate (plugin de Chrome pour enregistrer une page sous forme de WARC).
Les fichiers WARC sont lus à la BnF par la Wayback machine. Mais il existe également d'autres outils de consultation comme la Python Wayback, WAIL et la replayweb.page.
La série d'outils JWat tools permet de lire, écrire, analyser et valider les fichiers WARC et est intégrée par le module de caractérisation et validation WARC de l'outil Jhove. La bibliothèque warcio, écrite en python, lit et écrit des fichiers WARC. Enfin, l'outil Apache Tika permet d'extraire tous les enregistrements d'un conteneur WARC à l'aide de l'option -z
.
Une page wiki recense les outils autour du format WARC.
Le format WARC est utilisé pour les données issues de l'archivage du web depuis 2014.