私の会社では、ローカル開発データベースのスナップショットをdb.dump.tar.gz
ファイル。圧縮は理にかなっていますが、tarballには単一のファイル(db.dump
)。
単一のファイルをアーカイブする意味はありますか、それとも.tar.gz
そのような一般的なイディオムだけですか?なぜ.gz
?
.tar.gz
の代わりに.gz
を使用する利点は、
tar
は、gzip
よりも多くのメタデータ(UNIX権限など)を格納します。tar
を使用するオーバーヘッドも非常に小さいです。
本当に必要ない場合でも、1つのファイルをtarすることはお勧めしません。圧縮された単一ファイルに直接アクセスできる便利なツールは多数あります(zcat
、zgrep
など-bzip2
とxz
にも存在します)。
あなたは実際に質問の半分だけを求めています。もう1つの質問は、「なぜtarファイルをgzipで圧縮するのか」です。そして、答えはgzip
がファイルを小さくすることだけではありません(ほとんどの場合):
tar
:
gzip
:
tar
だけでは、dataが破損していないことを確認できません。 gzip
だけでは、ユーザー/グループID、変更時刻、および元のファイル名ではない可能性を復元できません。
組み合わせは、個々のコマンド/形式が提供するよりも強力です。これは、お互いの機能を補完するためです。
Gzip圧縮されたテキストファイルのみを使用することには非常に大きな利点があります。コンテンツには、less
、zgrep
、zcat
などのコマンドラインツールを使用して直接アクセスできます。
Tarなしでgzip/ bzip2 / xz を使用できることに人々が気付いていない可能性が高いと思います。おそらく、それらは [〜#〜] dos [〜#〜] /Windowsのバックグラウンドに由来するため、圧縮とアーカイブが単一の形式で統合されるのは通常のことです( Zip =、 [〜#〜] rar [〜#〜] など)。
メタデータの保存や余分なファイルを追加できる機能があるため、状況によってはtarを使用することには若干の利点がありますが、欠点もあります。プレーンなgzip/bzip2/xzファイルを使用すると、ファイルを解凍し、解凍したデータを別のツール(データベースなど)に直接パイプすることができます。解凍したデータをファイルとしてディスクに保存する必要はありません。 tarballを使用すると、これはより困難になります。
状況によってはtar
の使用を重要にする重要な違いがあります。@ jofelが彼の回答で述べた「メタデータ」の他に、tar
記録するファイル名アーカイブ。解凍すると、アーカイブの名前に関係なく元のファイル名が取得されますになります。
あなたの場合、tarアーカイブとそれに含まれるファイルにはdb.dump.tar.gz
とdb.tar
という関連名がありますが、tarファイルの名前を20-Apr-16.dump.tgz
などに変更したとします。これをtar xvfz
で解凍すると、db.dump
が取得されます。比較のために、20-Apr-16.dump.gz
を解凍すると、20-Apr-16.dump
ができます。 (編集:コメントで指摘されているように、gzipはファイル名の記録も作成しますが、通常は解凍時に使用されません)。 tar
アーカイブには、抽出されたファイルをサブディレクトリに配置する相対パス名を含めることもできます。
ユースケースによって、この種類のファイル名の永続化が必要か、必要かか、実際には望ましくないかが決まります。しかし、確かに、圧縮に関係なく、tar
アーカイブは通常のファイルとは異なる方法で移動します。
他のすべての回答に加えて、私は最近、ファイルが1つしかないと予想されるスクリプトの状況に遭遇しましたが、前の従業員が複数のファイルが生成される可能性があるスクリプトを作成しました。そのため、ファイルはtarで圧縮された後、転送され、展開されました。
プロセスが4.3 GBのファイルを作成するまでに成長すると、ロールオーバーして.dumpファイルに加えて.dump.001ファイルが作成されました。すべてのスクリプトが機能し続けました。
それはプロアクティブなシステム管理者の怠惰です!
タイムスタンプを保存してコピーするために、1つのファイルをtarでファイルします(ダウンロードでは見落とされがちです)。ファイルの権限と所有権はそれほど重要ではありません。downloadは、十分に統合されていないシステムに適用される用語です。
Tarで圧縮されているかどうかにかかわらず、ファイルを圧縮してダウンロードを高速化し、ディスク領域が不足しないようにすることが標準的な方法です。