web-dev-qa-db-ja.com

tarを使用してbzip2圧縮でアーカイブを実行できない

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
7
Oscalation

エラーメッセージは何をすべきかを示しています:おそらく-c(forcreate)を追加する必要があります。たとえば、

tar -jcf user-logs.tar  myargs

また、いくつかの引数myargsuser-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プログラムは、外部圧縮プログラムgzipbzip2xzを使用することができます。それらにpipeを開きます。プログラムは、パイプを介してtarアーカイブを圧縮ユーティリティに送信します。圧縮ユーティリティは、読み取ったデータをtarから圧縮し、tarプログラムが指定するファイル名に結果を書き込みます。

または、tarと圧縮ユーティリティを同じプログラムにすることもできます。 BSD tarはlibarchiveを使用して圧縮を行います(名前以外は実際には区別されません)。

参考文献:

10
Thomas Dickey

私はあなたの質問とデータを正しく解釈するかどうかはわかりませんが、tarボールを既に持っているだけで圧縮したいように見えますか?

bzip2 user-logs.tar
4
tink

エラーメッセージbzip2: Cannot exec: No such file or directoryは、tarがbzip2を見つけられないことを示しています。ほとんどの場合、インストールされていません。

お使いのOSに応じて、yum install bzip2またはapt-get install bzip2などを使用してインストールします。

3
rvs