過去の悲しみとパウロの発言に加えて:
歴史
「昔」では、cpio(オプションを-c
使用)は、tarより移植性と柔軟性が高いため、ファイルを他のUNIX派生製品に移動するときに使用するツールでした。しかし、タールの移植性の問題は、1980年代後半以降に解決されたと見なされる場合があります。
残念なことに、その頃にさまざまなベンダー-c
がcpioの形式を変更しました(GNU cpioとオプションのマニュアルページを参照してください-H
)。そのとき、tarはcpioよりも移植性が高くなりました...さまざまなUNIXベンダーがそれを整理するまで、ほぼ10年かかりました。持つGNUのtarとGNUのcpioの異なるソースからのテープに対処しなければならなかったすべての管理者のための絶対必要で、その後インストールを戻っていた(でも、最近私は推測します)。
ユーザーインターフェース
tarは、システムに接続されたテープドライブを管理者が構成するテープ構成ファイルを使用する場合があります。ユーザーは、テープの正確なデバイスノードを覚える必要はなく、「テープドライブ1を使用します」と言うだけです(非常に混乱しやすく、さまざまなUNIXプラットフォームで標準化されていません)。
しかし、主な違いは次のとおりです。
tarはそれ自体でディレクトリを検索でき、コマンドライン引数からバックアップするファイルまたはディレクトリのリストを取得します。
cpioは、指定されたファイルまたはディレクトリのみをアーカイブしますが、サブディレクトリ自体を再帰的に検索しません。また、cpioはstdinからアーカイブするアイテムのリストを取得します。これが、findと組み合わせてほとんど常に使用される理由です。
cpioコマンドは、多くの場合と比較すると、初心者に恐ろしい見えタール:
$ find myfiles -depth -print0 | cpio -ovc0 | gzip -7 > myfiles.cpio.gz
$ tar czvf myfiles.tar.gz myfiles
これが、ほとんどの人がtarを使用してアーカイブファイルを作成する主な理由だと思います。
また、GNU tarは、-z
アーカイブをその場でGNU zipで圧縮するオプションを提供し、物事をさらに簡単にします。
一方、find&cpioを使用して気の利いたことをすることもできます。実際にはより多くのUNIXライクなアプローチです:なぜに、ディレクトリツリーの検索が含まれたcpio:ほぼすべての1が考えることができるの世話をするツールすでにあるかどう発見が。思い浮かぶのは、特定の日付より新しいファイルのみをバックアップし、同じファイルシステムに存在するファイルに制限するかgrep -v
、特定のファイルを除外するために検索出力をフィルタリングすることです...
GNU tarの人々は、以前はcpioでしかできなかった多くのものを含めるために多くの作業を費やしました。実際、両方のツールはお互いから学びましたが、cpioだけがtarの形式を読み取ることができます-逆ではありません。
tarおよび出力処理
あなたが言ったことに対する最後のメモ:
また、TARはSTDOUTから圧縮できないと言われました。バックアップ用にZFSスナップショットをアーカイブ/圧縮したい。この効果を得るためにCPIOとbzip2を組み合わせることができるかどうか疑問に思っていました。
さて、tarのすべてのバージョン(GNUかどうか)はパイプで使用できます。-
アーカイブ名としてマイナス記号()を使用するだけです:
$ tar cvf - myfiles | bzip > myfiles.tar.bz
また、GNU tarには--to-command
ポストプロセッサコマンドを指定するオプションがありますが、私はまだパイプを好みます。特定のハードウェアデバイスに書き込むときに役立つかもしれません。
pax
:P