bsdtarとGNU tarの違いは何ですか?

bsdtarとGNU tarの違いは何ですか?

私はいつもGNUを使ってきましたtar。しかし、私が見たすべてのGNU / Linuxディストリビューションはbsdtarリポジトリにそれを提供します。一部のIIRCでは、デフォルトでインストールされているケースも見ました。私はPKGBUILDで見たように、Arch GNU / Linuxがbasedevel(たぶんbase、わかりませんが)の一部としてそれを要求すると確信しています。

bsdtar代わりになぜGNUを使用したいのですかtar?利点は何ですか?

私が質問者であることを参照してくださいBSDとGNU / Linuxユーザースペースの主な違いは何ですか?

答え1

Ubuntuは実際にはbsdtartarの実装でバンドルされています。libarchiveこれは古典的なものとは異なるはずですbsdtar。一部のBSDバリアントはlibarchiveFreeBSDなどのtar実装を使用します。

GNUtar実際にサポート他のtar変種自動圧縮検出。

〜のように可視化する貼り付けた内容は、特定の内容を含むUbuntuの紹介ですlibarchive

  1. libarchivebsdtar定義によると、これは既存のライブラリとは異なり、ライブラリですGNUtar
  2. libarchiveいくつかの古いよく知られていないGNU tarバリアントは読むことができません。特に、一部のヘッダーはbase64でエンコードされているので、tarファイルは7ビットの純粋なASCIIになります(これは1.13.6-1.13.11の場合であり、1.13から変更されました。
  3. libarchivebsdtartar以外のファイル(zip、iso9660、cpioなど)を読み込みますが、古典的なbsdtarは読みません。

これでlibarchive問題が解決したので、ほとんどがクラシックでサポートされているものに帰結しますbsdtar

ここでマンページを見ることができます。

もともと質問でクラシックのメリットが何であるか尋ねましたが、bsdtar実際にそのようなメリットがあるのか​​よくわかりません。本当に重要なのは、すべてのシステムで実行する必要があるシェルスクリプトを作成する場合は、渡した内容がすべてのバリアントでtar実際に有効であることを確認する必要があることです。

GNUtarlibarchive' bsdtar、classic bsdtar、'はもちろん、ほとんどの場合接するtar実装ですが、(初期QNXなど)他の実装もあると確信していますstar。 //機能が最も豊富ですが、多くの点で元の標準から外れてから古い(おそらくより良い方向)。BusyBoxtarlibarchiveGNUtarstar

答え2

BSDTAR対TARなど

別の特典があります! !

ここでは5つのトピックを扱います(トピックとは異なりますが、必要なものも扱います)。

  1. bsdtarとtar
  2. スパースファイルとビスパスファイル
  3. btrfsを使用するシックファイルとシーンファイル/lun
  4. btrfsのないシックファイルとシーンファイル/lun
  5. 厚いものと薄いものの違いと、それがルーンにのみ適用されない理由

bsdtar通常のファイルよりもまれなファイルを処理します。アスファルト

  • bsdtarはすべて0を取得し、メタデータのみを取得します。
  • tar は実際に各ゼロを処理します。

*例: 20テラバイトのスパースファイル(biglun)全体に10MBのデータを含む20テラバイトのスパースファイル(biglunと呼ばれる)を想像してみてください。

スパースファイルの作成方法:

スパースファイル - 作成方法 - 検出 - すべて スパースファイルは「シーン」lunと同じです(lunとして使用する場合)。 「厚い」Lunziは異なります。

*トピックに戻る:

  • biglunの容量を増やすとtarが10MBをすべて通過し、~20tbの悪いゼロがlun全体に散らばってしまいます。これには時間がかかり、tarファイルがかなり大きくなります。また、 - 抽出中 - スパースファイルのtarファイルを抽出したことはありませんが、ここでは間違っている可能性があります。

  • bsdtarring biglunは10MBのデータのみを処理し、約20TBのゼロの小さなメタデータを生成します。

メリット?まあ、私は上記でいくつか書きました。

rsyncとcpに似ています。

  • また、巨大な希少ファイルをrsyncするとtarのように動作します。
  • 巨大なファイルをcpとして処理すると、自動的にbsdtarのように動作します(0を上書きするようにcpのss動作を変更できます)。

個人的には、まれなファイル(薄いLUNなど)と一般的なファイル(厚いLUNなど)を想像したいと思います。

次のトピックはBTRFSThin Lun と Thick Lun:

  • このようなファイルシステムの場合BTRFS、シンLUNは希少ファイルです(Wikiのドキュメントに示すように切り捨てを使用して処理されます)。

     truncate -s <size in kilobytes> filename
    

    ヒント:バックアップとbsdtar、次にコピーCP

  • 通常のLUNは、+ C属性を持つ通常のファイルです(+ Cを使用すると、COW以外の書き込み時にコピーが可能になるため、すべての書き込みがデフォルトで割り当てられた場所に保持され、上書きが存在するとファイルに新しい書き込みが発生しません。 . 入力または削除 - 研究そしてBTRFS)。切り捨てでファイルを作成する代わりに、「fallocate -l」を使用してファイルを作成します。

    fallocate -l <size in kilobytes> filename
    chattr +C filename
    

    ヒント:bsdtarまたはtarを使用してバックアップし、rsyncまたはcpを使用してコピー

次のトピックは、EXT仮想LUNと汎用LUNです。

  • スパースボルン

    truncate -s <size in kilobytes> filename
    

    ヒント:バックアップとbsdtar、次にコピーCP

  • 通常のLUNは、+ C属性を持つ通常のファイルです(+ Cを使用すると、COW以外の書き込み時にコピーが可能になるため、すべての書き込みはデフォルトで割り当てられた場所に保持され、上書きまたは削除時にファイルに新しい書き込み操作が発生します。しません)。 - 研究そしてBTRFS)。切り捨てでファイルを作成する代わりに、「fallocate -l」を使用してファイルを作成します。

    touch filename
    fallocate -l <size in kilobytes> filename
    

    ヒント:bsdtarまたはtarを使用してバックアップし、rsyncまたはcpを使用してコピー

厚いファイルと薄いファイルとは何ですか?

  • 通常のLUN /ファイルのデータは0から割り当てられたサイズまで埋められ、メタデータは0があるかのように偽装されます。データを入力すると、データが入力されます。
  • Thick luns/files: 先頭にゼロまたは他の値でデータを入力します (lazy zero またはeager zero)。これらの設定は保存されます(またはZFSはrefreservation呼び出しが好きです)。

VMWARE のドキュメントでは、一般 LUN/ファイルの遅延ゼロ化と即時ゼロ化について説明します。https://communities.vmware.com/message/2199576

ヒント

太字と薄いものはlunにのみ適用されるのではなく、ファイル、zfsファイルシステム(共有/ボリューム/luns)などにも適用できることに注意してください(zfsのみを見てください)。

答え3

~からUbuntuパッケージの説明:

bsdtarプログラムには、以前のtar実装と比較して多くの利点があります。

  • 図書館。コア機能はライブラリにあるため、pkg_add などの他のツールで使用できます。
  • 自動フォーマット検出。 Libarchiveは、アーカイブを読み取ると圧縮(none / gzip / bzip2)とフォーマット(old tar、ustar、gnutar、pax、cpio、iso9660、zip)を自動的に検出します。すべてのデータソースに対してこれを行います。
  • Pax交換フォーマットをサポートします。これは、各項目にランダムな拡張属性を追加する以前の「ustar」tar形式のPOSIX / SUSv3拡張です。 GNU tar形式のすべての機能を提供しますが、より良いです。
  • ファイルフラグ、ACL、ランダムパス名などを処理します。 Pax交換フォーマットは、簡単にスケーラブルなテクノロジを使用してキー/値属性をサポートします。任意のパス名、グループ名、ユーザー名、ファイルサイズはすべてPOSIX標準の一部です。 libarchiveはそれを拡張し、ファイルフラグ、ACL、および任意のデバイス番号をサポートします。
  • GNUタールのサポート。 LibarchiveはほとんどのGNU tarアーカイブを読み込みます。必要に応じてさらなる改善を行うことができる。

答え4

  • @archivebsdtarは、次の構文を使用して他のアーカイブからメンバーを読み込んでtarできます。

  • GNU tarにはこの--deleteオプションがあります。最近、これがアーカイブを破損する可能性があることがわかりました。

関連情報