tarアーカイブがテキストファイルである10240バイトよりはるかに大きいのはなぜですか?

tarアーカイブがテキストファイルである10240バイトよりはるかに大きいのはなぜですか?

これら2つの質問を確認しました(質問1質問2)、しかし私の理解には役に立ちません。file.txt40行の文字列を含むファイルがありますHello World!ls -lサイズは520バイトで表示されます。このファイルをアーカイブtar -cvf file.tar file.txtして再アーカイブすると、10240バイトであるls -lことがわかります。file.tarなぜ?

私はいくつかのマニュアルを読んで、アーカイブと圧縮が異なることを学びました。しかし、誰かがそれがどのように機能するかを説明できますか?

答え1

tarデフォルトでは、最小アーカイブサイズは10240バイトです。GNUtarマニュアル詳細(ただし、これはGNUに固有のものではありません)。

GNUを使用すると、tar異なるブロックサイズ、異なるブロック引数、またはその両方を指定することでこの問題を軽減できます。

tar -cv -b 1 -f file.tar file.txt

関連するメタデータがfile.txt自分と一緒に保存されるため、結果はまだ自分よりも大きくなります。file.tarほとんどの場合、ファイルメタデータ(名前、サイズ、タイムスタンプ、所有権、権限)のブロック、ファイルの内容、アーカイブ終了エントリの2つのブロックが表示されるため、アーカイブされていない最小アーカイブサイズには0が含まれます。 -lengthファイルは4ブロック(2,048バイトと512バイトブロックの1つ)です。file.txtfile.txt

答え2

tar単にファイルを保存することに加えて、次の3つのことを行う必要があります。

  1. メタデータの保存(ファイル名、モード、所有者、グループ、日付...)
  2. ファイルの終わりを表示します。
  3. アーカイブの終わりを表示します。

tar「テープアーカイブ」を意味します。テープの場合は、ファイルの終わりがどこにあるかを確認することが重要であり、デバイスは検索時にもこれを知る必要があります(テープがより速く移動する)。したがって、テープの便宜のために、tarは各ファイルの終わりにゼロを追加し、アーカイブの終わりに別の血清セットを追加します。あなたが指摘した2番目の質問はこれを説明します。

を使用してアーカイブの内容を表示できますhexdump -C archive.tar |less

関連情報