web-dev-qa-db-ja.com

なぜ単一のファイルをtarするのですか?

私の会社では、ローカル開発データベースのスナップショットをdb.dump.tar.gzファイル。圧縮は理にかなっていますが、tarballには単一のファイル(db.dump)。

単一のファイルをアーカイブする意味はありますか、それとも.tar.gzそのような一般的なイディオムだけですか?なぜ.gz

102
gardenhead

.tar.gzの代わりに.gzを使用する利点は、

  • tarは、gzipよりも多くのメタデータ(UNIX権限など)を格納します。
  • セットアップを簡単に拡張して、複数のファイルを保存できます
  • .tar.gzファイルは非常に一般的です。only-gzippedファイルは一部のユーザーを困惑させる可能性があります。 (cf. MelBurslansコメント

tarを使用するオーバーヘッドも非常に小さいです。

本当に必要ない場合でも、1つのファイルをtarすることはお勧めしません。圧縮された単一ファイルに直接アクセスできる便利なツールは多数あります(zcatzgrepなど-bzip2xzにも存在します)。

164
jofel

あなたは実際に質問の半分だけを求めています。もう1つの質問は、「なぜtarファイルをgzipで圧縮するのか」です。そして、答えはgzipがファイルを小さくすることだけではありません(ほとんどの場合):

tar

  • ファイル名とその他の情報を保存します メタデータ :モード、所有者ID、グループID、ファイルサイズ、変更時間
  • チェックサムを保存します(ヘッダーのみ)

gzip

  • 元のファイル名を保存できますが、これはオプションです
  • 元のデータに対してCRC-32チェックサムがあります
  • ファイルを圧縮します

tarだけでは、dataが破損していないことを確認できません。 gzipだけでは、ユーザー/グループID、変更時刻、および元のファイル名ではない可能性を復元できません。

組み合わせは、個々のコマンド/形式が提供するよりも強力です。これは、お互いの機能を補完するためです

63
Anthon

Gzip圧縮されたテキストファイルのみを使用することには非常に大きな利点があります。コンテンツには、lesszgrepzcatなどのコマンドラインツールを使用して直接アクセスできます。

30
ejdi

Tarなしでgzip/ bzip2 / xz を使用できることに人々が気付いていない可能性が高いと思います。おそらく、それらは [〜#〜] dos [〜#〜] /Windowsのバックグラウンドに由来するため、圧縮とアーカイブが単一の形式で統合されるのは通常のことです( Zip =、 [〜#〜] rar [〜#〜] など)。

メタデータの保存や余分なファイルを追加できる機能があるため、状況によってはtarを使用することには若干の利点がありますが、欠点もあります。プレーンなgzip/bzip2/xzファイルを使用すると、ファイルを解凍し、解凍したデータを別のツール(データベースなど)に直接パイプすることができます。解凍したデータをファイルとしてディスクに保存する必要はありません。 tarballを使用すると、これはより困難になります。

21
plugwash

状況によってはtarの使用を重要にする重要な違いがあります。@ jofelが彼の回答で述べた「メタデータ」の他に、tar記録するファイル名アーカイブ。解凍すると、アーカイブの名前に関係なく元のファイル名が取得されますになります。

あなたの場合、tarアーカイブとそれに含まれるファイルにはdb.dump.tar.gzdb.tarという関連名がありますが、tarファイルの名前を20-Apr-16.dump.tgzなどに変更したとします。これをtar xvfzで解凍すると、db.dumpが取得されます。比較のために、20-Apr-16.dump.gzを解凍すると、20-Apr-16.dumpができます。 (編集:コメントで指摘されているように、gzipはファイル名の記録も作成しますが、通常は解凍時に使用されません)。 tarアーカイブには、抽出されたファイルをサブディレクトリに配置する相対パス名を含めることもできます。

ユースケースによって、この種類のファイル名の永続化が必要か、必要かか、実際には望ましくないかが決まります。しかし、確かに、圧縮に関係なく、tarアーカイブは通常のファイルとは異なる方法で移動します。

17
alexis

他のすべての回答に加えて、私は最近、ファイルが1つしかないと予想されるスクリプトの状況に遭遇しましたが、前の従業員が複数のファイルが生成される可能性があるスクリプトを作成しました。そのため、ファイルはtarで圧縮された後、転送され、展開されました。

プロセスが4.3 GBのファイルを作成するまでに成長すると、ロールオーバーして.dumpファイルに加えて.dump.001ファイルが作成されました。すべてのスクリプトが機能し続けました。

それはプロアクティブなシステム管理者の怠惰です!

8
Criggie

タイムスタンプを保存してコピーするために、1つのファイルをtarでファイルします(ダウンロードでは見落とされがちです)。ファイルの権限と所有権はそれほど重要ではありません。downloadは、十分に統合されていないシステムに適用される用語です。

Tarで圧縮されているかどうかにかかわらず、ファイルを圧縮してダウンロードを高速化し、ディスク領域が不足しないようにすることが標準的な方法です。

2
Thomas Dickey