アーカイブと圧縮

提供: ArchWiki
2022年6月17日 (金) 18:03時点におけるKgx (トーク | 投稿記録)による版 (リンクを修正)
ナビゲーションに移動 検索に移動

従来の Unix アーカイブおよび圧縮ツールは、UNIX哲学 に従って分離されています。

  • ファイル アーカイバ は、複数のファイルを1つのアーカイブファイルに結合します。例えば、tar
  • 圧縮 ツールはデータを圧縮および解凍します。例えば、 gzip

これらのツールは、最初にアーカイブファイルを作成し、次にそれを圧縮することによって順番に使用されることがよくあります。

もちろん、 それ以外にも暗号化、エラー検出、およびリカバリレコードを追加したり 両方を行うツール もあります。

アーカイブのみ

名前 パッケージ マニュアル 説明
GNU tar tar tar(1), info pacmanAUR が使用し、ユビキタス tar アーカイブ (tarball) を操作するための Core_utilities
libarchive libarchive bsdtar(1)
bsdcpio(1)
ライブラリも提供する tarcpio の実装。 pacmanmkinitcpio によって使用されます。
ar binutils ar(1) tar の前のレガシー Unix アーカイバ。 現在、静的リンク ファイルの作成にのみ使用されています。
cpio cpio cpio(1) stdin/stdout を介したファイルアーカイバは、 cpio および tar 形式をサポートします。
DAR darAUR dar(1) 大規模なライブファイルシステムをバックアップするアーカイバは、ハードリンク、拡張属性、スパースファイル、および inode タイプを処理します。
ヒント: GNU と BSDtar はどちらも、bzip2、compress、gzip、lzip、lzma、lzop、zstd、および xz 圧縮アーカイブの解凍を委任して自動的に実行します。 BSD tar のみが lz4 をネイティブにサポートします(ただし、GNUtar は-use-compress-program=lz4/-Ilz4 と同等の機能を実行できます。)アーカイブを作成する場合、両方とも -a スイッチをサポートして、ファイル拡張子に基づいて適切な圧縮プログラムを介して作成されたアーカイブを自動的にフィルタリングします。 BSD tar はフォーマットに基づいて圧縮フォーマットを認識しますが、GNUtar はファイル拡張子に基づいて推測するだけです。

こちらも参照 アーカイブツールの使用法

圧縮ツール

圧縮のみ

これらの圧縮プログラムは、独自のファイル形式を実装しています。

名前 パッケージ マニュアル 拡張子 Tar 拡張子 説明 並列実装
bzip2 bzip2 bzip2(1) .bz2, .bz .tbz2, .tbz Burrows–Wheeler algorithm を使用します。 lbzip2, pbzip2
gzip gzip gzip(1) .gz, .z .tgz, .taz DEFLATE アルゴリズムに基づくGNUzip。 pigz
lrzip lrzip lrzip(1) .lrz rzip の改良版で、複数のアルゴリズムを使用しています。 マルチスレッド
LZ4 lz4 lz4(1) .lz4 C で書かれ、圧縮と解凍の速度に焦点を当てています。 マルチスレッド
lzip lzip lzip(1) .lz LZMA を使用。 plzipAUR
lzop lzop lzop(1) .lzop .tzo LZO (lzo) ライブラリを使用。
xz xz xz(1) .xz, .lzma .txz, .tlz LZMA を使用します。これは、GNU coreutils およびカーネルアーカイブファイルのデフォルトです。 マルチスレッド, pixz, pxz-gitAUR
zstd zstd zstd(1) .zst Zstandard アルゴリズムを使用します。 マルチスレッド
  • 並列実装では、複数の CPU コアを使用することで速度が向上します。
  • Tar 拡張機能とは、 tar と圧縮ツールが使用されている圧縮アーカイブを指します。 .tzo.tar.lzo です。
  • #Compressionのみの使用法 も参照してください。

アーカイブと圧縮

名前 パッケージ マニュアル 拡張子 説明
p7zip p7zip 7z(1) .7z 7-zip's サードパーティ POSIX ポート。
7-Zip 7-zipAUR - 圧縮率の高いファイルアーカイバのアップストリーム Linux バージョン。
RAR rarAUR, unrar rar(1) .rar フォーマットと RAR ユーティリティはどちらも独自仕様です。
ZIP zip, unzip zip(1), unzip(1) .zip Linux の世界以外で広く使用されています。
Unarchiver unarchiver unar(1), lsar(1) many Mac アプリケーションのコマンドラインツール、40を超えるアーカイブ形式をサポートします。
ZPAQ zpaqAUR zpaq(1) .zpaq C++ で記述された高圧縮率のアーカイバ、いくつかのアルゴリズムを使用します。
LHa lhasa, lhaAUR lha(1) .lzh (on Amiga: .lha) LZH/LHA アーカイバは、 lh7 メソッドをサポートします。

こちらも参照してください アーカイブと圧縮ツールの使用法

機能チャート

解凍

名前 gzip bzip2 ZIP LHa/LZH 圧縮 pack CAB ARJ
gzip Yes No Yes No Yes Yes No No
p7zip Yes Yes Yes Yes No Yes Yes Yes
unarchiver Yes Yes Yes Yes Yes No Yes partial
  1. gzip gunzip は単一メンバーの ZIP ファイルのみを解凍できます。

使用比較

アーカイブツールの使用法

名前 圧縮 解凍 リストの内容
tar(1) tar cfv archive.tar file1 file2 tar xfv archive.tar tar -tvf archive.tar
cpio(1) ls file1 file2 | cpio -o > archive.cpio cpio -i -vd < archive.cpio cpio -t < archive.cpio

圧縮ツールの使用法

名前 圧縮 解凍 解凍標準出力
bzip2(1) bzip2 file bzip2 -d file.bz2 bzcat file.bz2
gzip(1) gzip file gzip -d file.gz zcat file.gz
lrzip(1) lrzip file
lrztar folder
lrzip -d file.lrz
lrztar -d folder.tar.lrz
lrzcat file.lrz
xz(1) xz file xz -d file.xz xzcat file.xz

アーカイブと圧縮ツールの使用法

名前 圧縮 解凍 解凍標準出力 リストの内容
7z(1) 7z a archive.7z file1 file2 7z x archive.7z 7z e -so archive.7z file1 7z l archive.7z
rar(1) & unrar rar a archive.rar file1 file2 rar x archive.rar rar p -inul archive.rar file1 rar l archive.rar
zip(1), unzip(1) zip archive.zip file1 file2 unzip archive.zip unzip -p archive.zip file1 unzip -l archive.zip
lha(1) lha ao7 archive.lzh file1 file2 lha x archive.lzh minimal: lha l archive.lzh verbose: lha v archive.lzh

便利なツール

  • atool — さまざまな種類のファイルアーカイブを管理するためのスクリプト
https://www.nongnu.org/atool/ || atool
  • patool — ポータブルなコマンドラインアーカイブファイルマネージャー
https://github.com/wummel/patool || patoolAUR
  • dtrx — インテリジェントなアーカイブ抽出ツール
https://github.com/brettcs/dtrx || dtrxAUR
  • J7Z — GUI for Linux in java は、データ圧縮とバックアップの簡略化を試みています、7z, BZip2, Zip, GZip, Tar アーカイブを作成できます
http://j7z.xavion.name/ || j7zAUR
  • unp — アーカイブを簡単に解凍できるコマンドラインツール
https://github.com/mitsuhiko/unp || python-unpAUR
  • unpack — 複数のアーカイブ形式を処理するためのラッパースクリプト
https://github.com/githaff/unpack || unpack-gitAUR

アーカイブ形式の決定

アーカイブを抽出するには、そのファイル形式を決定する必要があります。 ファイルに適切な名前が付けられている場合は、ファイル拡張子からその形式を推測できます。

それ以外の場合は、 file ツールを使用できます。file(1) を参照してください。

レアケース、または非推奨のツール

名前 パッケージ 拡張子 説明
ARC arcAUR .arc, .ark ダイヤルアップ時代の頃に非常に人気がありました。 ZIP に置き換えられました。
ARJ arj .arj 1990年代半ばに DOS/Windows で使用されたアーカイバ。 これはオープンソースのクローンです。
compress ncompress .Z 古くに使われた.Zアーカイブを処理できる古典的な UNIX 圧縮ユーティリティ。
PAR2 par2cmdline .par2 データの整合性を高めるためのパリティアーカイバ。 Parchive も参照してください。
shar sharutils .shar 有効なシェルスクリプトである自己解凍型アーカイブを作成します。
Zoo zooAUR .zoo PKZIP が普及する前は、OpenVMS オペレーティングシステムで主に普及していました。

デバイスマッパーの圧縮

この記事あるいはセクションで使われている用語や表現には問題が存在します。
議論: Do not use indefinite time references such as "recently", see Help:Language register. (議論: トーク:アーカイブと圧縮#)

最近オープンソース化された VDO プロジェクトをメインライン化 (Linux カーネルプロジェクトに統合) するために行われている作業があります。これは、ストレージ効率を向上させるために重複排除および圧縮デバイスマッパーレイヤーを提供します。 次のパッケージが利用可能です。

  • vdo — VDO ボリュームを管理するためのユーザースペースツール
https://github.com/dm-vdo/vdo || vdoAUR
  • kvdo — 重複除外および圧縮ブロックストレージのプールを提供する1組のカーネルモジュール
https://github.com/dm-vdo/kvdo || kvdo-dkmsAUR

圧縮ライブラリ

  • Brotli — LZ77アルゴリズム、ハフマンコーディング、および2次コンテキストモデリングを使用したデータストリームの圧縮アルゴリズム。
https://github.com/google/brotli || brotli
  • libzip — ZIP ファイルの作成と抽出を提供します。KDE と Deepin で zip/unzip ツールの代わりに使われています。
https://libzip.org || libzip
  • zlib — gzip および PKZIP にある deflate 圧縮方法を実装する圧縮ライブラリ。
https://www.zlib.net/ || zlib
  • Zopfli — zopfli と呼ばれる deflate 互換アルゴリズムを使用した Google の高圧縮率ファイルコンプレッサー。
https://github.com/google/zopfli || zopfli-gitAUR

トラブルシューティング

日本語のファイル名が文字化けしてしまう

日本語版 Windows では、ZIP アーカイブは Shift-JIS でエンコードされています。デフォルトでは、これらのアーカイブは展開されたときに 文字化け したファイル名になります。 正しく解凍するには、コマンドラインで shift-jis オプションを使って `unzip` を使ってください。

$ unzip -O shift-jis nihongo.zip

参照