15

I have searched and found how to the two portions of what I want but nothing that would allow you to do it in whole....

What I would like to do is extract a specific folder from a tar.gz to another folder in a different path that how it is in the tar.gz.

For example:

  • Directory path in my backup.tar.gz file is: a/b/c/d (d is my main with many others inside)

  • I want to unpack directory 'd' into 'm' inside this different server path: a/b/m

  • If I attempt this code: tar -xzf backup.tar.gz -C a/b/m

** The folder structure looks like: a/b/m/a/b/c/d but I would like it to look like a/b/m+d so that all my main files/folders in the archived 'd' path ends up in the 'm' path

Any help is greatly appreciated.

Thanks!

Yevgen
  • 767
  • 2
  • 9
  • 22

2 Answers2

19

Ok I figured it out!

Basically I can just use the strip command to remove the x number of leading directories. In this case, my command would look like this:

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

That removed the first three path directories from my archive (backup.tar.gz : a/b/c/d) before extracting it to the desctination directory.

Now it looks like this: a/b/m+d

Yevgen
  • 767
  • 2
  • 9
  • 22
  • Personally, I tried this and it matched multiple directories, extracting tons of files I didn't want, creating a jumbled mess of files. I should have read more documentation before trying this. – PJ Brunet Feb 19 '17 at 05:19
1

This worked for me on OS X (pulling specific files from a GitHub repo):

# Move to target directory and run:
curl -#L https://github.com/USER/REPO/tarball/BRANCH | tar -xzv --strip-components 3 --include=*./some/folder
mhulse
  • 4,062
  • 6
  • 28
  • 35
  • 1
    `--include` is exactly the option I need right now, but it is sadly unavailable on GNU tar. – i336_ Jul 23 '16 at 06:28