tar czf somename.tar some_*_filesが間違っていますか?

tar czf somename.tar some_*_filesが間違っていますか?

tar czf somname.tar some_*_filesもちろんtar czf somname.tar.gz some_*_files、これは間違っていますかtar xf somename.tar?つまり、.gz拡張子が追加されていません。

この質問は、純粋に.gzファイル名に拡張子を追加しないことと意図しないsomename.tar副作用があるかどうかについてです。 この質問はの使い方に関するものではありません-z

答え1

必要に応じてタールボール名を指定できます。例えば、

tar czvf surprise.c /etc/hosts 2>/dev/null

file surprise.c
surprise.c: gzip compressed data, from Unix, original size modulo 2^32 10240

GUIでは、これらのファイル.tar.gzにまたはサフィックスが付いていると予想できます.tgz。圧縮されたターボールを探しているなら、2つのサフィックスのうちの1つがあると思いますが、システム自体はそれを心配しません。

結論的に?ファイルの内容に役立つヒントを提供するには、通常のサフィックスを使用してください。tar圧縮されていないアーカイブの場合.tar、または圧縮されたアーカイブ.tgzの場合。.tar.gzgzip

答え2

.gzファイル名の末尾を省略しても、コマンドがtar cz出力ファイルを圧縮形式で書き込むのを防ぐことはできず、ほとんどのGNUコマンドは入力ファイルが圧縮されたかどうかをtar x自動的に検出して解凍することを防ぎません。つまり、コンピュータは、.gzファイルの使用方法を知るために、ファイル名の末尾に 。

したがって、あなたの質問は、ファイルの内容について他の人とどのように通信するかによって異なります。.gzファイル名に欠けている内容が混乱してしまい、誤った操作をする可能性があります。 (時々ファイルの作成と解凍の間に数ヶ月が経過すると、その「その他」はあなた)

他の人が.を見ると、.gzファイルが圧縮されていることを知っています。あまり重要でない場合は省略しても構いません。

答え3

少なくともGNUの場合(私が知っているtar唯一のGNUです)tar圧縮オプションを指定するだけです。抽出を使用するときに拡張機能は重要ではないと思いますtar xf
2番目の拡張子()は省略しますxz

tar cJf archive.tar  pic*.jpg
file archive.tar
archive.tar:XZ圧縮データ、チェックサムCRC64

そして最初の(tar):

tar cJf archive  pic*.jpg
file archive
アーカイブ:XZ圧縮データ、チェックサムCRC64

jpg拡張機能を試してみましょう。

tar cJf archive.jpg  pic*.jpg
file archive.jpg
archive.jpg:XZ圧縮データ、チェックサムCRC64

tar.gz拡張を使用しますが、次のように圧縮してみましょうxz

tar cJf archive.tar.gz  pic*.jpg
file archive.tar.gz 
archive.tar.gz: XZ圧縮データ、チェックサムCRC64

ご覧のとおり、すべての場合にtarファイル(含まれている)はアーカイブ名に関係なく正しくアーカイブされ圧縮されます。xz拡張機能を使用すると違いが発生します。--auto-compressつまり、サポートされている拡張機能を提供すると、正しいコンプレッサーを使用できます。

tar caf archive.tar.xz  pic*.jpg
file archive.tar.xz
archive.tar.xz:XZ圧縮データ、チェックサムCRC64

そして、拡張子を認識しない場合(または拡張子を使用している場合tar)、圧縮されていないアーカイブを作成しますtar

tar caf archive.bag pic*.jpg
file archive.bag 
archive.bag: POSIX tar アーカイブ (GNU)

tar xfそれにもかかわらず、マニュアルに記載されているように、すべての場合にファイルが抽出されます。

圧縮されたアーカイブを読むのはより簡単です。 GNU tarは自動的にそのフォーマットを認識するので、他のオプションを指定する必要はありません。したがって、次のコマンドは、前の例で生成されたアーカイブを一覧表示して抽出します。

# List the compressed archive
$ tar tf archive.tar.gz
# Extract the compressed archive
$ tar xf archive.tar.gz

形式認識アルゴリズムは、特定の圧縮形式に固有のファイルの先頭の特殊バイトシーケンスである署名に基づいています。この方法が失敗すると、tarはアーカイブ名のサフィックスを使用してフォーマットを決定するために置き換えられます(参照:自動圧縮、認識されたサフィックスのリストを取得する)。

拡張機能を使用しない方が良い習慣ですか?いいえ。他の人が言ったように、ここでの主な目標は明確です。

関連情報