BagIt は、任意のデジタル コンテンツのディスク ベースのストレージとネットワーク転送をサポートするように設計された階層型ファイルシステム規約のセットです。「バッグ」は、「ペイロード」(任意のコンテンツ)と、バッグのストレージと転送を記録するためのメタデータファイルである「タグ」で構成されます。必須のタグ ファイルには、ペイロード内のすべてのファイルとその対応するチェック サムをリストしたマニフェストが含まれています。BagItという名前は、「囲んで預ける」方法[ 1 ]に由来しており、「バッグに入れてタグ付けする」とも呼ばれます。
バッグは、通常ファイルの集合として保存されるデジタルコンテンツに最適です。また、受信側がサポートしていない可能性が高いデータベース構造で通常保存されるコンテンツをアーカイブ目的でエクスポートするのにも適しています。クロスプラットフォーム(WindowsとUnix)のファイルシステム命名規則に依存するバッグのペイロードには、任意の数のディレクトリとサブディレクトリ(フォルダとサブフォルダ)を含めることができます。バッグは、ネットワーク経由でフェッチしてバッグを完成させることができるコンテンツのURLをリストした「fetch.txt」ファイルを介して、ペイロードコンテンツを間接的に指定できます。単純な並列処理(たとえば、Wgetのインスタンスを10個実行する)により、この機能を利用して大きなバッグを非常に高速に転送できます。バッグの利点は次のとおりです。
BagIt は現在RFC 8493で定義されています。 [ 2 ]これは、デジタルキュレーションコミュニティが任意のデジタルコンテンツをパッケージ化するために使用するシンプルなファイル命名規則を定義しており、物理メディア (ハードディスクドライブ、CD-ROM、DVD ) とネットワーク転送 ( FTP、HTTP、rsyncなど)の両方で確実に転送できるようにします。BagIt は、時間の経過に伴うコンテンツのデジタル保存の管理にも使用されます。仕様と今後の方向性についての議論は、デジタルキュレーションのディスカッションリストで行われます。[ 3 ]
BagItの仕様は「バッグ」という概念を中心に構成されています。バッグとは、少なくとも以下の内容を含む名前付きファイルシステムディレクトリです。
dataペイロード、つまり保存対象のデジタルコンテンツを構成するデータファイルを含むディレクトリ。ファイルはサブディレクトリにも配置できますが、空のディレクトリはサポートされていません。dataディレクトリ内に存在するファイル名とそのチェックサムを一覧表示するマニフェストファイルが少なくとも 1 つ必要です。特定のチェックサムアルゴリズムは、マニフェストファイル名の一部として含まれます。たとえば、MD5チェックサムを含むマニフェストファイルは という名前になりますmanifest-md5.txt。bagit.txtディレクトリがバッグであること、準拠しているBagIt仕様のバージョン、およびタグファイルに使用される文字エンコーディングを識別するファイル。バッグを受信すると、ソフトウェアはマニフェストファイルを検査して、ペイロードファイルが存在すること、およびそれらのチェックサムが正しいことを確認できます。これにより、誤って削除されたファイルや破損したファイルを特定できます。以下は、myfirstbag2つのペイロードファイルを含む最小限のバッグの例です。タグファイルの内容は、ファイル名の下に記載されています。
私の最初のバッグ/ |-- データ | \-- 27613-h | \-- 画像 | \-- q172.png | \-- q172.txt |-- manifest-md5.txt | 49afbd86a1ca9f34b677a3f09655eae9 data/27613-h/images/q172.png | 408ad21d50cef31da4df6d9ed81b01a7 data/27613-h/images/q172.txt -- bagit.txt BagItバージョン: 0.97 タグファイル文字エンコーディング: UTF-8
この例では、ペイロードはたまたまPortable Network Graphics(PNG)画像ファイルとOptical Character Recognition( OCR)テキストファイルで構成されています。一般的に、ファイル形式の識別と定義はBagIt仕様の範囲外であり、ファイル属性も同様に範囲外です。
仕様では、マニフェストに加えて、いくつかのオプションのタグファイルが許可されています。これらのタグファイルの文字エンコーディングは、で指定する必要がありbagit.txt、で指定する内容は常にUTF-8でエンコードする必要があります。仕様では、以下のオプションのタグファイルが定義されています。
bag-info.txtバッグのメタデータを詳細に記述したファイル。コロンで区切られたキーと値のペア(HTTPヘッダーに類似)を使用する。tagmanifest-md5.txt)fetch.txt内のペイロードファイルに追加または置き換えるために、ペイロードファイルを取得できるURLを一覧表示するdataバージョン15までは、この草案ではZIPやTARなどのアーカイブファイル内でバッグをシリアル化する方法も説明されていました。バージョン15以降は、技術的な理由ではなく、仕様の範囲と焦点の変更により、シリアル化は仕様の一部ではなくなりました。
BagIt 仕様は、米国議会図書館とカリフォルニア デジタル ライブラリーが、国立デジタル情報インフラストラクチャおよび保存プログラムの一環として作成されたデジタル コンテンツを転送する際に協力して生まれたものです。このアイデアの起源は、筑波大学で行われた「封入および保管」モデルの研究に遡り、アーカイブされたリソースを相互に保管して長期的なデジタル保存を可能にするものです。[ 1 ]マニフェストとチェックサムを使用する方法は、 ZIP (ファイル形式)、Deb (ファイル形式)、およびパブリック FTP サイトなどで使用されていることからもわかるように、かなり一般的な方法です。
2007 年、カリフォルニア デジタル ライブラリーは、数テラバイトのコンテンツ (主にWeb アーカイブデータ)を議会図書館に転送する必要がありました。BagIt 仕様では、パッケージ メタデータとファイルのチェックサムの詳細を示すマニフェストとともにコンテンツを「バッグ」にパッケージ化することができ、バッグを受け取った後にチェックサムが検証されました。この仕様は、 2008 年 12 月にJohn KunzeによってIETFドラフトとして作成され、RFC として発行されるまでに何度か改訂されました。[ 2 ] 2009 年に、議会図書館は仕様とそれに関連するユース ケースを説明するビデオを作成しました。[ 4 ] [ 5 ] 2018 年に、バージョン 1.0 がインターネット技術タスク フォースによって RFC として公開されました。