web-dev-qa-db-ja.com

tar.gzから特定のフォルダを特定のディレクトリに抽出します

私は私が欲しいものの2つの部分への方法を検索して見つけましたが、あなたがそれを全体的に行うことを可能にするものは何もありません....

私がやりたいのは、特定のフォルダーをtar.gzから、tar.gz内とは異なるパスにある別のフォルダーに抽出することです。

例えば:

  • Backup.tar.gzファイルのディレクトリパスは次のとおりです。a/ b/c/d(dは私のメインで、他の多くのファイルが含まれています)

  • この別のサーバーパス内のディレクトリ「d」を「m」に解凍したい:a/b/m

  • このコードを試してみると:tar -xzf backup.tar.gz -C a/b/m

**フォルダ構造はa/b/m/a/b/c/dのようになりますが、アーカイブされた「d」内のすべてのメインファイル/フォルダがa/b/m + dのようになります。パスは「m」パスになります

どんな助けでも大歓迎です。

ありがとう!

10
Yevgen

わかりました!

基本的に、stripコマンドを使用して、x個の先頭ディレクトリを削除できます。この場合、私のコマンドは次のようになります。

tar -xzf backup.tar.gz --strip-components = 3 -C a/b/m

これにより、最初の3つのパスディレクトリがアーカイブ(backup.tar.gz:a/b/c/d)から削除されてから、宛先ディレクトリに抽出されました。

今では次のようになります:a/b/m + d

13
Yevgen

これは、OS X(GitHubリポジトリから特定のファイルをプルする)で機能しました。

# Move to target directory and run:
curl -#L https://github.com/USER/REPO/tarball/BRANCH | tar -xzv --strip-components 3 --include=*./some/folder
0
mhulse