BagIt
Das BagIt File Format definiert eine plattformunabhängige, hierarchische Verzeichnisstruktur und wird im Bereich der Speicherung und Übertragung digitaler Inhalte verwendet. Ein Verzeichnis, das entsprechend diesem Format aufgebaut ist, wird Bag genannt. Das Format wurde an der California Digital Library sowie an der Library of Congress entwickelt[1] und liegt aktuell in Version 1.0 als IETF-Standard[2] vor. Das Format findet auch zunehmend in Deutschland Verbreitung und wird beispielsweise im Digitalen Archiv des Landes Nordrhein-Westfalen[3], in einem Projekt am Deutschen Literaturarchiv Marbach,[4] sowie an der Sächsischen Landesbibliothek – Staats- und Universitätsbibliothek Dresden (SLUB)[5] verwendet.
Spezifikation
Eine Bag muss aus dem Payload-Verzeichnis „data“ sowie den Metadatendateien „bagit.txt“ sowie „manifest-<alg>.txt“ bestehen. Die zu sichernden Inhalte müssen im Verzeichnis „data“ abgelegt sein. BagIt bezeichnet Metadatendateien als „Tags“. Die Tag-Datei „bagit.txt“ enthält immer zwei Zeilen, wovon die erste die BagIt-Version benennt, die zweite Zeile die Kodierung der Tagdateien, die immer UTF-8 sein muss. In der Datei „manifest-<alg>.txt“ werden alle Dateien, die sich im Payloadverzeichnis befinden, zusammen mit einer Prüfsumme aufgeführt. Der Name der Manifestdatei muss den Algorithmus enthalten, mit dem die Prüfsummen gebildet wurden.
Das folgende Beispiel zeigt eine Bag, deren Payloadverzeichnis eine JPG-Bilddatei enthält. Die Prüfsumme wurde mittels des MD5-Algorithmus erstellt.
bag/ | |-- data | \-- nyancat.jpg | |-- manifest-md5.txt | +-------------------------------------------------+ | |51afb385ha019f34b671a3f0a615fae1 data/nyancat.jpg| | +-------------------------------------------------+ \-- bagit.txt +-------------------------------------------------+ |BagIt-version: 0.97 | |Tag-File-Character-Encoding: UTF-8 | +-------------------------------------------------+
Zusätzlich zu den zwei obligatorischen Metadatendateien nennt der Entwurf weitere fakultative Tagdateien und definiert deren Inhalt. Es ist außerdem möglich, eigene Tagdateien zu definieren. Der Entwurf beschreibt (bis einschließlich Version 14) auch die Serialisierung einer Bag. Dies ermöglicht die Erstellung von Archivdateien mit tar oder zip. In neueren Versionen des Entwurfs ist die Serialisierung nicht mehr Teil der Spezifikation, technisch aber weiterhin möglich.
Implementierungen
Eine Bag lässt sich mit Mitteln, die nahezu jedes Betriebssystem bereitstellt, erzeugen und auf Datenintegrität durch Checksummenvergleich überprüfen. Neben einem solchen manuellen Vorgehen gibt es Implementierungen, die den Prozess optimieren.
- Gobagit: Golang
- BagIt Library: Java
- Archive::BagIt: Perl
- Catmandu::BagIt: Perl
- BagItPHP: PHP
- bagit: Python
- pybagit: Python
- BagIt gem: Ruby
- libcbag: C++
Einzelnachweise
- Library Develops Specification for Transferring Digital Content. Library of Congress, 2. Juni 2008, abgerufen am 19. März 2014 (englisch).
- J. Kunze, J. Littman, E. Madden, J. Scancella, C. Adams: RFC – The BagIt File Packaging Format (V1.0). 2018 (englisch).
- Sebastian Cuy, Martin Fischer, Daniel de Oliveira, Jens Peters, Johanna Puhl, Lisa Rau, Manfred Thaller: DA-NRW: Eine verteilte Architektur für die digitale Langzeitarchivierung. (PDF; 275 kB) Archiviert vom (nicht mehr online verfügbar) am 25. Juli 2014; abgerufen am 23. September 2018.
- Steffen Fritz: Die Anwendung des BagIt-Formats im Deutschen Literaturarchiv Marbach. In: B.I.T.online. Nr. 2, 2014, S. 102–106 (b-i-t-online.de [PDF]).
- SIP Spezifikation für automatischen Ingest SLUBArchiv SLUB Dresden Version 2.0, 2020-03-31. In: Technische Standards für die Ablieferung von digitalen Dokumenten. SLUB Dresden, 31. März 2020, abgerufen am 4. Mai 2020.