アーカイブとは
アーカイブ(archive)とは、
コンピュータ上で複数のデータやファイルをまとめて一つに
保存する技術のことです。主に、データとそれに付随する
メタデータ(作成日時、作成者など)を関連付けて長期間
保存することを目的としています。アーカイブは、データの書き換えを想定せず、オリジナルの状態を保持することを重視します。
アーカイブファイル
一つ以上のファイルや
ディレクトリ、そしてそれらの
メタデータをまとめて一つのファイルにしたものをアーカイブファイルと呼びます。アーカイブファイルは、しばしば可逆
データ圧縮技術と組み合わせて使用され、ファイルサイズを縮小することが一般的です。これにより、ストレージ容量の節約やデータ転送の効率化が図られます。
アーカイブは
バックアップと似た概念として捉えられがちですが、両者には明確な違いがあります。
バックアップは、主に最新のデータ状態を
保存し、災害時などに迅速に復旧(ロールバック)することを目的としています。一方、アーカイブは過去のデータを長期的に
保存し、必要に応じて参照することを目的としています。
例えば、
電子メールを例に考えてみましょう。1年前のメールは、今日届いたメールに比べると重要度は低いかもしれませんが、後で検索・閲覧できるようにしておく必要があります。このような過去のメールは、必ずしも迅速に取り出す必要がないため、「今日のメールは高速なストレージに、過去のメールは低速だが安価なストレージに」というように、ストレージを階層化して
保存する手法が有効です。これは階層型ストレージ管理技術と呼ばれ、データの検索性を維持しながらストレージコストを削減できます。メールアーカイブの身近な例としては、
Gmailがあります。
Gmailでは、見終わったメールを削除するのではなくアーカイブすることで、受信トレイには表示されませんが、検索によっていつでも閲覧できます。
ファイルアーカイバ
複数のファイルや
ディレクトリ、
メタデータをまとめて一つのファイル(アーカイブファイル)に変換するソフトウェアをファイルアーカイバと呼びます。ファイルアーカイバは、単にアーカイバと呼ばれることもあります。
UNIXにおけるアーカイバ
UNIX系OSでは、`ar`、`tar`、`cpio`といったコマンドラインツールを使用してアーカイブファイルを作成します。これらのツールは、アーカイブ機能のみを提供し、圧縮機能は持っていません。
アーカイブファイルの圧縮
UNIX系OSでは、`gzip`、`bzip2`、`xz`などの追加ツールと組み合わせてアーカイブファイルの圧縮を行います。圧縮する際に、ファイル名に拡張子が追加されます。例えば、複数のファイルを`tar`でアーカイブし、さらに`gzip`で圧縮すると、ファイル拡張子は`.tar.gz`となります。
Windowsにおけるアーカイバ
Microsoft Windowsには、標準でZIP圧縮フォルダ、CAB圧縮フォルダ、LZH圧縮フォルダなどのアーカイバが組み込まれています。また、WinRARや7-zipなどのサードパーティ製ソフトウェアも広く利用されています。これらのソフトウェアは、グラフィカルユーザーインターフェース(GUI)で操作できるものが多く、アーカイブ機能と圧縮機能を同時に提供します。一部のアーカイバはコマンドラインインターフェースも提供していますが、Windowsには標準搭載されていません。Windowsで利用されるアーカイバは、アーカイブ機能と圧縮機能を同時に行うのが一般的です。また、ソリッド圧縮はWindows標準ではサポートされていませんが、WinRARや7-zipなどのサードパーティ製品では提供されています。
アーカイブファイルの形式
ファイルアーカイバによって変換されたファイルをアーカイブファイル(書庫)と呼びます。アーカイブファイルを作成する工程は、アーカイブあるいは書庫化と呼ばれます。代表的なアーカイブファイルの形式には、`ar`や`tar`があります。アーカイブファイルから元のファイルを取り出す操作は、展開、解凍、または抽出と呼ばれます。
ファイル圧縮
アーカイブでは、ファイル圧縮が頻繁に行われます。ただし、ファイル圧縮は必ずしもアーカイブファイルの作成を意味するわけではありません。例えば、ZIP形式はアーカイブ機能と圧縮機能を両方備えています。一方で、アーカイブファイルの中の一つのファイルだけを解凍することを考慮したフォーマットも存在します。ZIP形式では、圧縮後にアーカイブする方式が採用されています。また、圧縮時にデータを固定サイズのブロックに分割して符号化することで、特定のファイル周辺だけを解凍して取得できる方式もあります。ファイル圧縮には、
可逆圧縮が用いられます。
ファイル圧縮は、パーソナル
コンピュータの分野では
1980年代後半頃から
パソコン通信の発達とともに
LHAやZIPなどの圧縮方式が誕生し普及しました。
主な圧縮アーカイブ形式
ZIP:パーソナルコンピュータ分野で広く普及している圧縮形式。圧縮方式には主にDeflate法が使用されます。
7z:7-Zipで利用される多機能かつ高圧縮率な形式。オープンソースであり、LZMA法が主に用いられます。
RAR:マルチメディアデータの圧縮に強みを持つ高圧縮形式。
ZPAQ:増分
バックアップやロールバックに対応した超高圧縮形式。
CAB (Cabinet archive):Windows標準で利用できる圧縮形式。
GCA, DGCA (G Compression Archive):テキストデータに強い国産の圧縮形式。
LHA:純国産の圧縮形式で、LZHとも呼ばれます。
StuffIt:Macintosh系列で利用される圧縮形式。
Compact Pro:Macintosh系列で使用されていた圧縮形式(現在は開発終了)。
主なストリーミング圧縮形式
複数ファイルの圧縮では、tarのような無圧縮アーカイブ形式と組み合わせて使用されます。例えば、tarでアーカイブした後にgzipで圧縮した場合は、拡張子が`.tar.gz`となります。Webブラウザで使える形式も存在します(現行は☆、過去は★で表記)。
pack (
.z):UNIX初期から存在する形式だが、現在はほとんど使われていません。
compress★ (
.Z):packの代替として商用UNIXで標準的に使用されていた形式。現在ではgzipに取って代わられています。
gzip☆ (GNU Zip;
.gz):商用UNIXで標準のcompressにあったLZWアルゴリズムの特許問題を回避するため、フリーの代替品として開発された。圧縮方式はDeflate法が使用されます。
Deflate☆:HTTPプロトコルで利用される圧縮方式で、gzipと同じアルゴリズムだがヘッダが異なります。
bzip (.bz):特許問題により配布が中止された高圧縮形式で、
算術符号を使用しています。
bzip2 (.bz2):主に
UNIXで使用されるオープンソースの高圧縮形式。bzipの後継として開発されました。
xz (.xz):bzip2と同様に、主に
UNIXで使用されるLZMAアルゴリズムによるオープンソースの高圧縮形式。
圧縮率だけでなく、圧縮と解凍の速度も重視した圧縮形式も存在します。
LZO (.lzo):高速な圧縮形式として古くから存在しています。
Snappy (.sz):
Googleが開発した高速な圧縮形式。
LZ4 (.lz4):高速な圧縮形式。Unityで使用されています。
NVIDIAはGPU実装のnvcompを提供しています。
Zstandard (Zstd) (.zst):
Facebookが開発した高速な圧縮形式。
Brotli☆ (.br):
Googleが開発した高速な圧縮形式。
LZFSE (.lzfse):
Appleが開発した高速な圧縮形式。
Kraken:RAD Game Toolsが開発した高速な圧縮形式。PlayStation 5|PlayStation_5にはKrakenのアクセラレータが搭載されています。
LZHAM (
.lzham):圧縮率が高く、解凍も比較的速い圧縮形式。
エラー検出と回復
アーカイブファイルには、エラー検出のためのパリティチェックやチェックサムが含まれることがあります。例えば、ZIPファイルでは巡回冗長検査(CRC)が実装されています。RARアーカイブには、冗長なエラー訂正データ(リカバリレコード)が含まれています。また、アーカイブファイルには、特に複数ファイルアーカイブ内の欠落ファイルの回復を支援するために、個別のパリティアーカイブ(PAR)ファイルが付属している場合があります。
関連項目
ファイルアーカイバの比較
アーカイブフォーマットの一覧
アーカイブフォーマットの比較
バックアップ
階層型ストレージ管理
レプリケーション
文書管理システム
データ圧縮、可逆圧縮
ウェブアーカイブ