Tarを使用してbzipでアーカイブを圧縮するのが困難です。私が持っているアーカイブはuser-logs.tarです。
私はこれを実行しようとしています:
tar -jf user-logs.tar
私はこのエラーを受け取ります:
tar: You must specify one of the `-Acdtrux' or `--test-label' options
Try `tar --help' or `tar --usage' for more information.
また、-cを使用して、ファイル名拡張子がbzipの新しいファイルを作成しようとしましたが、うまくいきませんでした。
# tar -cvjf user-logs.tar.gz user-logs.tar
user-logs.tar
tar (child): bzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
エラーメッセージは何をすべきかを示しています:おそらく-c
(forcreate)を追加する必要があります。たとえば、
tar -jcf user-logs.tar myargs
また、いくつかの引数myargs(user-logs.tar
アーカイブに入れるもの)。
2番目のケースでは、bzip2
がインストールされていないことが問題です。 tarプログラムは、このexternalプログラムに依存して圧縮を行います。
Tarアーカイブがあり、単純に圧縮したい場合は、次のようにします。
bzip2 user-logs.tar
(hadbzip2
がインストールされている場合)は、ファイルをuser-logs.tar.bz2
に変更します(通常、ファイルをはるかに小さくします)。
bzip2
のインストールは、使用しているシステムによって異なります。たとえば、Ubuntuの場合、
Sudo apt-get install bzip2
fedoraは(おそらくdnf
)かもしれません:
Sudo yum install bzip2
GNU tar
プログラムは、user-logs.tar
などの既存のファイルを圧縮する方法を知りません(bzip2
が圧縮します)。tar
プログラムは、外部圧縮プログラムgzip
、bzip2
、xz
を使用することができます。それらにpipeを開きます。プログラムは、パイプを介してtarアーカイブを圧縮ユーティリティに送信します。圧縮ユーティリティは、読み取ったデータをtar
から圧縮し、tar
プログラムが指定するファイル名に結果を書き込みます。
または、tar
と圧縮ユーティリティを同じプログラムにすることもできます。 BSD tarはlibarchive
を使用して圧縮を行います(名前以外は実際には区別されません)。
参考文献:
私はあなたの質問とデータを正しく解釈するかどうかはわかりませんが、tarボールを既に持っているだけで圧縮したいように見えますか?
bzip2 user-logs.tar
エラーメッセージbzip2: Cannot exec: No such file or directory
は、tarがbzip2を見つけられないことを示しています。ほとんどの場合、インストールされていません。
お使いのOSに応じて、yum install bzip2
またはapt-get install bzip2
などを使用してインストールします。