先頭のディレクトリの一部をスキップして tarball を抽出するにはどうすればよいですか?

先頭のディレクトリの一部をスキップして tarball を抽出するにはどうすればよいですか?

次のコマンドを使用してフォルダーをアーカイブしています:

tar jcf "home/username/forum/forum.tar.bz2" /var/www/forum/

次に、次を使用して抽出します:

tar jxf forum.tar.bz2 ./

正しく解凍されますが、/home/username/forum/var/www/forumフォルダーが作成されます。フォルダーに解凍するには何をする必要がありますか/home/username/forum?

ありがとう

答え1

に加えてdv3500eaの回答、次のコマンドを使用して、var/www/forum/を含む tarball を抽出できますforum/

tar xjf forum.tar.bz2 --strip-components=2

var/および はwww/2 つのパス コンポーネントなので、2になります--strip-components

tarball の中身がわからない場合は、次のtオプションを使用します。

tar tjf forum.tar.bz2

パイプを通して、lessスクロールに矢印キーを使用できるようにします。

使用されるオプションに関する一般的な注意事項:

  • x- tarballを抽出します。コマンドが何をするかを確認するのが最も論理的なので、常に最初のオプションとして配置します。
  • c- tarballを作成する
  • t- tarballの内容を一覧表示します
  • j- tar に bzip2 圧縮された tarball を解凍させます。これは.bz2拡張機能と重複しているので、このオプションも削除できます。
  • f- このオプションは引数としてファイル名を必要とします。これは抽出される tarball ( tar xf file.tar.bz2) または作成される tarball ( tar cf file.tar.bz2)のいずれかです。

答え2

アーカイブを作成するときは、-C /var/www/アーカイブの作成中に現在のディレクトリを /var/www に変更します。

tar jcf home/username/forum/forum.tar.bz2 -C /var/www/ forum

これにより、「フォーラム」フォルダがアーカイブの最上位レベルに配置され、次のコマンドを実行すると現在のフォルダに直接抽出されます。

tar jxf forum.tar.bz2 ./

答え3

迅速な(そしておそらく間違った)解決策は、tar を実行する前にディレクトリを変更するようにコマンドを変更することです。つまり、

cd /var/www/forum; tar jcf "home/username/forum/forum.tar.bz2" .

関連情報