web-dev-qa-db-ja.com

主要なディレクトリのいくつかをスキップして、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フォルダーに抽出するには何をする必要がありますか?

ありがとうございました

5
Bakhtiyor

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

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

これにより、「forum」フォルダーがアーカイブの最上位になり、実行時に現在のフォルダーに直接抽出されます。

tar jxf forum.tar.bz2 ./
6
dv3500ea

dv3500ea's answer に加えて、次のコマンドを使用して、var/www/forum/からforum/を含むtarballを抽出できます。

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)または作成される(tar cf file.tar.bz2)です。
12
Lekensteyn

高速な(そしておそらく間違った)解決策は、tarする前にコマンドを変更してディレクトリを変更することです。 IE:

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