5

I'm trying to modify a certain tar.gz archive I have. When I go to create the tar, it retains the parent directory structure, as a tarball should. However, is there a way to simply create a tar archive with just the files I specifiy, rather than the entire directory tree?

  • Would you accept a way to remove directories on extraction instead of creation? As @yarek answered, finding and piping the files shows that tar doesn't support this. – Mike Fiedler May 7 '12 at 12:27
  • Well, some variants of tar do - see below. – yrk May 11 '12 at 20:13
3

Disabling recursion in tar.

POSIX pax(1) has -d option which enables cpio-like interface while allowing to create .tar files. Example from Wikipedia:

find . -depth -print | pax -wd > archive.tar

GNU tar(1) has an analogous option, --no-recursion. Example from there:

find dir tests | tar -cf archive -T - --no-recursion

P.S. I usually fall back to cpio(1) in such cases.

1

It's a little dirty, but yes:

michael@choad:~$ tar cf - -C ~/scratch packing_slip_411.pdf -C ~/bin/df_linux/ README.linux | tar tvf -
-rw-r--r-- michael/users 37686 2012-03-30 15:09 packing_slip_411.pdf
-rwx------ michael/users  1364 2012-03-30 07:27 README.linux
-1

Specifying the full path of a file will preserve the tree:

tar cf newarchive.tar /path/to/file1 /path/to/file2

To omit the file structure, cd to the directory and create the archive:

(cd /path/to && tar cf /tmp/newarchive.tar file1 file2)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.